2012-09-26 47 views
7

因此,我已經跳過了很多環節,以使我的團隊中擔心版本控制和命令行的開發人員對fork/rebase/pull-request git工作流程感到滿意。強制git在rebase期間進行無操作提交

在加入底墊中的文章對我們發展的wiki,我剛剛得到的地方,我說點「做git rebase。如果有任何合併衝突,解決這些問題,然後做一個git add。然後做git rebase --continue。」

但是在通過示例並截取屏幕截圖的過程中,我被提醒說如果出現合併衝突,並且我解析它以支持上游分支,則實際上拒絕繼續並提供錯誤:

No changes - did you forget to use 'git add'? 
If there is nothing left to stage, chances are that something else 
already introduced the same changes; you might want to skip this patch. 

還有這裏的技術細節的精彩討論:Git rebase: conflicts keep blocking progress

但我想就是讓這種行爲停止

我認爲有一個很好的設計理由說明爲什麼會發生這種情況(可能與僅使用正常提交機制的rebase有關,這種行爲可能有意義),但在這種情況下,它會令人困惑和不直觀,並會產生衝突邏輯:「修復如果您的修復看起來與上游分支完全相同,請執行git rebase --skip。在所有其他情況下,請執行git rebase --continue。「

有沒有一種方法來抑制這種行爲,無論是用rebase還是在版本控制的配置文件中(所以我不必在每個開發人員的計算機上設置它或提供指示來執行此操作)?

+2

我不認爲這是這個問題的重複。那邊的OP詢問如何跳過空承諾的重新綁定,而OP在這裏詢問如何讓'git rebase'創建空提交。 –

+0

但爲什麼你想要一個空的提交?一個空的提交意味着所有在其中完成的工作都是在重新分配的分支中提交的。在這種情況下,整個提交需要被刪除。這可以在事實之後完成(比如通過使用交互式重新分頁和省略不需要的提交)或者通過其他方法完成,但是具有空提交肯定是「錯誤的」。 – ErikE

回答

2

目前documentation of git-rebase提到了--keep-empty選項:

--keep-empty
     Keep the commits that do not change anything from its parents in the result.

不幸的是,沒有設置這個投入到一個配置文件。