使用git merge防止不必要的提交

时间:2018-09-01 00:03:56

标签: git git-merge

我的目光遍布整个页面: enter image description here

我想相信。 但是我尝试了,现实却发散了。

我有这个:

git fetch origin;
git merge --no-edit origin;

即使远程分支和本地分支之间没有任何更改,这似乎也会创建新的提交。

我不认为使用

 git merge --no-ff origin;

git merge --no-commit origin;

是答案。如果没有更改,如何在不提交的情况下将遥控器合并到本地?也许根本不合并,并且首先检查是否存在差异?

我感到困惑的地方:我假设--no-commit会在远程分支具有需要合并到本地分支的更改的情况下中断,因为这不总是需要一个新的提交?

1 个答案:

答案 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。换句话说,如果远程分支实际上不是您真正认为的分支(即使从技术上讲是这样),则应该这样做。