我的眼睛遍布这页:Git merge without auto commit
我想相信。但我试过并且现实分歧了。
我有这个:
git fetch origin;
git merge --no-edit origin;
这似乎创建了新的提交,即使远程和本地分支之间没有任何更改。
我不认为使用
git merge --no-ff origin;
要么
git merge --no-commit origin;
是答案。如果没有更改,如何在不进行提交的情况下将远程合并到本地?也许根本不做合并,先检查一下是否有区别?
令我感到困惑的是:我认为如果远程分支有需要合并到本地分支的更改,--no-commit
将会中断,因为不应该总是需要新的提交吗?
正如Ry所提到的,如果远程分支中没有变化,则输出为Already up to date.
,并且没有提交。因此,我不确定这是否解决了您认为有问题的行为,但我怀疑它可能:
所以说你有一个本地更改和一个远程更改,你用git fetch
git merge
拉遥控器你的树将如下所示:
£ git log --oneline --graph --decorate
* 153b72e (HEAD -> master) Merge branch 'b2'
|\
| * eb48067 (b2) b2 mod
* | 6397e45 master mod
|/
* 034e374 initial
我们有两个实际的提交,现在是一个合并提交。对于从构建机器或其他东西签入的微小配置更改可能有点混乱。
所以我们可以这样做(而不是git merge
):
£ git rebase b2
First, rewinding head to replay your work on top of it...
Applying: master mod
£ git log --oneline --graph --decorate
* 49de99c (HEAD -> master) master mod
* 5019681 (b2) b2 mod
* 1f8b73e initial
除了跳过merge commit
,这也跳过了identical commits
。换句话说,如果远程分支不是你认为是分支的东西(即使它在技术上是这样),那就是要做的事情。