2012-09-26 48 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.

不幸的是,没有设置这个投入到一个配置文件。