我想相信。 但是我尝试了,现实却发散了。
我有这个:
git fetch origin;
git merge --no-edit origin;
即使远程分支和本地分支之间没有任何更改,这似乎也会创建新的提交。
我不认为使用
git merge --no-ff origin;
或
git merge --no-commit origin;
是答案。如果没有更改,如何在不提交的情况下将遥控器合并到本地?也许根本不合并,并且首先检查是否存在差异?
我感到困惑的地方:我假设--no-commit
会在远程分支具有需要合并到本地分支的更改的情况下中断,因为这不总是需要一个新的提交?
答案 0 :(得分:1)
因此,正如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
。换句话说,如果远程分支实际上不是您真正认为的分支(即使从技术上讲是这样),则应该这样做。