git - 使用 git merge 防止不必要的提交
问题描述
我的眼睛都在这个页面上: 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
。换句话说,如果远程分支实际上不是您认为的分支(尽管从技术上讲它是),则可以这样做。
推荐阅读
- javascript - 对反应表中的数据进行排序 - 不是按字母顺序排列,而是按特定顺序
- z3 - 如何在 SMTLIB / Z3 / CVC4 中声明 forall 量词?
- javascript - 在同一运行时安全隔离两个 Javascript 代码库?
- reactjs - 如何将 React Context 与 Hooks 一起使用?
- c# - .Net Framework C# MVC 自发重定向到来自错误控制器的视图
- eslint - 如何使用 testing-library/no-node-access 访问 props.children
- php - 清除事件 ID 并调用新的事件 ID 而无需刷新页面
- postgresql - EF Core 使用对象内部对象和 FK 查询 DTO
- reactjs - 你应该在 HOC 组件中访问 redux 存储吗?
- javascript - 为什么我收到错误“SyntaxError: Unexpected keyword 'else' in if elseif elseif else