防止git编写空的merge提交

时间:2010-11-18 21:03:45

标签: git

习惯了SVN,我总是在共享任何更改之前进行'更新',所以在推送之前我总是先拉。

当我拉动时很烦人(即使遥控器没有任何变化)并且看到与0 changed files with 0 additions and 0 deletions合并的提交。承诺如下:
https://github.com/UCF/Harvard-Mobile-Web/commit/be9d6b2d1ab196554e080d8b8647a9d16c8a5ddf

在查看提交历史时,我发现这是无用的噪音。

也许有一些我不知道的东西,这个提交有什么意义吗?如果没有,有没有办法阻止git编写空的合并提交?

2 个答案:

答案 0 :(得分:21)

git pull的定义本质上是“为我当前的分支获取和合并新的远程HEAD”。如果你想改造,只需要git pull --rebase。这会修改pull以在新的远程HEAD之上重新设置提交。

就个人而言,我喜欢git fetch(从远程下载新对象,但不更新任何本地分支)并检查情况,然后自行决定是合并还是变基。

答案 1 :(得分:5)

有几个选项,都归结为同样的事情:使git使用--rebase选项(如@cdhowie所述)。

您可能会发现您更喜欢其中之一:

选项1:每次都明确使用git pull --rebase

每个项目的

选项2:,通过添加

修改.git/config文件
[branch "master"]
 remote = origin
 merge = refs/heads/master
 rebase = true

选项3 :在您的个人~/.gitconfig

[branch]  
  autosetuprebase = always

我个人喜欢选项3,因为它允许我不对其他开发人员强制执行任何操作,同时仍然不必每次都输入--rebase

另见How to make Git pull use rebase by default for all my repositories?