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

问题描述 投票:-2回答:1

我的眼睛遍布这页: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将会中断,因为不应该总是需要新的提交吗?

git git-merge
1个回答
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。换句话说,如果远程分支不是你认为是分支的东西(即使它在技术上是这样),那就是要做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.