2011-01-25 85 views
107

我有一個公共倉庫的一個分支,我想從原來的倉庫當前提交更新我的分支:git的變基致命的:需要一個單一版本

$ git fetch <remote> 
remote: Counting objects: 24, done. 
remote: Compressing objects: 100% (20/20), done. 
remote: Total 20 (delta 12), reused 0 (delta 0) 
Unpacking objects: 100% (20/20), done. 
From git://github.com/path_to/repo 
    9b70165..22127d0 master  -> $/master 
$ git rebase <remote> 
fatal: Needed a single revision 
invalid upstream <remote> 

<remote>是代替我遠程名稱,實際上並不是我的遠程名稱。關於這個錯誤的文檔似乎有點鬆散。

+2

我從一個不相關的原因得到了這個錯誤 - 在Windows命令提示符下使用「git rebase --interactive c4e9c94 ^」。它促使我「更多?」,無論它如何回答提示,它都說「致命的:需要單一修訂」。但是當我從bash運行相同的命令時,它運行正常。 – 2012-09-23 02:07:40

+0

作爲一個側面說明,對於我來說,除了上游分支以「遠程」列出之外,我不得不取得我想重新分配的特定分支。 「git fetch master」。用「git fetch 」提取仍然會給我這個錯誤。 – Sweetness 2017-05-12 15:25:36

回答

88

您需要提供分支名稱(或其他提交標識符),而不是遠程的名稱git rebase

如:

git rebase origin/master 

不是:

git rebase origin 

注意,雖然如在需要提交的參考參數使用時origin應解析爲裁判origin/HEAD,似乎不是每個存儲庫獲得這樣的參考,所以它不可能(並且在你的情況下不能)工作。它是明確的支付。

+1

後者應該實際工作 - ref參數中的「origin」被解釋爲「origin/HEAD」。我已經看到存儲庫最終不知道'origin/HEAD'是什麼,儘管... – Cascabel 2011-01-25 20:15:49

+1

@Jefromi:我擔心我不相信你,我剛剛在一個測試倉庫(其中`origin`有一個`HEAD`)嘗試`git rebase origin`,我得到了OP的錯誤。 rebase的文檔沒有說遠程名稱對'`有效。 – 2011-01-25 20:21:55

9

問題是,你從一個分支中分支出......你試圖重新分配的分支。您不能重定向到不包含當前分支最初創建的提交的分支。

我得到這個當我第一次重訂一個本地分支X推送的一個Y,然後試圖通過衍合到X衍合分支(第一X上創建)爲推動一個Y.

解決了我

假如我目前的分支來自該分支的祖先,我沒有問題重新設置到遠程分支(可能甚至沒有檢出)。

18

檢查你的拼寫正確的分支名稱。我正在重新設計一個故事分支(即branch_name)並忘記了故事部分。 (即story/branch_name),然後git向我吐出這個錯誤,這在本文中沒有多大意義。

0

對於遠程origin

$ echo "ref: refs/remotes/origin/master" > .git/refs/remotes/origin/HEAD 
13

我遇到了這一點,並意識到我試圖變基之前沒有獲取上游。所有我需要的是git fetch upstream

-1

我錯誤地打字git rebase當我的意思是git bisect。確保您使用的是您期望的命令!

相關問題