2011-08-15 59 views
66

我試圖挑選主從提交併將其納入當前生產分支。但是,當我執行git cherry-pick <SHA-hash>,我剛剛得到這個消息:git櫻桃挑選不工作

# On branch prod_20110801 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# site/test-result/ 
nothing added to commit but untracked files present (use "git add" to track) 
The previous cherry-pick is now empty, possibly due to conflict resolution. 
If you wish to commit it anyway, use: 

    git commit --allow-empty 

Otherwise, please use 'git reset' 

注:我試着做了復位和復位 - 硬頭^,既不似乎改變任何東西。

我很困惑,爲什麼這不適合我。

任何有關如何解決此問題的見解,建議或想法都會有所幫助〜!

+0

這件事發生在我身上時,我不小心嘗試挑選錯誤的提交。有時使用gitk時會發生。 – cst1992

回答

89

Git正在將櫻桃挑選解決爲無操作 - 所提交的所有更改都由您當前分支上的一些提交引入。 (不管怎麼說,這就是Git所認爲的)。驗證你選擇櫻桃的提交還沒有被合併,或者是合併,rebase/cherry-pick或者零碎的補丁。 (使用git show <commit-id>看到差異。)

+14

感謝您的建議,事實證明櫻桃選擇已經發生,我所有需要做的就是推送給github。 –

+0

對,我沒有意識到它正在檢查給定commit-id的文件的內容。我去尋找日誌中的提交id並找不到它。原來它已經合併了。 – mparaz

7

在我而言這是推動我堅果,因爲這是很明顯的,具體的承諾,我想摘櫻桃了沒有被合併到我的當前分支。

事實證明,有人已經已經櫻桃選擇了一週前的承諾。 更改,但不是特定的SHA,已經在我當前的分支中,我沒有注意到它們。

檢查您正嘗試挑選的文件。如果他們已經進行了更改,則提交的版本已經以其他方式挑選或添加。因此沒有必要再挑選櫻桃。

+0

我很確定,當你的分支被一個櫻桃選中時,你的分支的具體提交是* never *,因爲櫻桃選擇將是一個新的哈希,對吧?或者我誤解了? – msouth

+0

@msouth我最初從其他答案中拿走的是「提交已經合併」,但我可以看到它在我的分支中不是*。你說的對櫻桃挑選總是一個新的SHA雖然。 – pkamb

+0

是的,當我輸入該信息時,我正在考慮「具體提交,如哈希標識」。我的語言不夠精確。我經常通過'git log --graph --pretty --decorate --oneline'的輸出來查看給定的SHA是否在我的分支中。看到我的回答,關於如何也可以混淆基於認爲提交信息是指示變化 - 有一種情況,它不是,這就是最初導致我這個問題。一個人的大腦往往會製造這些捷徑,他們偶爾會回來咬你。 – msouth

1

另請注意,向樹添加空文件(例如.gitkeep)被櫻桃挑選視爲空提交。

+0

在我的案例中,我有一個恢復提交(這是恢復一個空的提交本身)之前,我櫻桃選擇嘗試,所以我想任何空的ish可能會導致此消息出現。 – lidkxx

0

所以,這裏還有另一個令人困惑的情況下這可能會出現:我有以下幾點:

git log screenshot

我試圖櫻桃採摘9a7b12e這顯然是沒有什麼 - 甚至試圖在告訴我在git日誌輸出中那行4497428是我真正想要的。 (我所做的只是尋找提交信息,並抓住了我看到的第一個哈希)。無論如何,只是想讓人們知道,還有另外一種方法可以讓你嘗試櫻桃挑選不操作。

+0

對你沒有任何解釋的幫助不是很有幫助 - 這是我導致我在搜索時發現這個問題的確切再現問題。如果您有建議改善這一點,請在評論中告訴我,而不是僅僅降低投票。 – msouth