问题标签 [3-way-merge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
241 浏览

git - 从概念上讲,`git revert` 与三路合并有何关系?

我试图从https://stackoverflow.com/a/37151159git revert了解如何使用三路合并

假设当前分支是B,command 是否git revert C创建了一个提交D,那么这是和的B三向合并的结果?CDC~

0 投票
2 回答
3987 浏览

git - “git merge --squash”的正确用例是什么?

有人喜欢git merge --squash的原因如下:

压缩到单个提交使您有机会清理混乱的 WIP 提交,并为您正在合并的更改提供一个很好的理由。

https://coderwall.com/p/qkrmjq/git-merge-squash

但是,我认为有一些缺点超过了制作干净历史的优点。

  1. git merge --squash产生一个非合并提交。因此,Git 不会将您要合并的提交识别为合并基础。git merge --squash当 1) 在分支 X 上将 A 更改为 B,2)从分支 X 到分支 Y,以及 3) 在分支 X 上将 B 更改为 A(还原),以及 4) 将 X 合并到 Y 时,这会导致不需要的合并结果在此处输入图像描述 。 4,在分支 Y 上,从 A 到 B 的更改未恢复。这里,这是 3 路合并,因此比较从分支 X 到合并基础的差异和从分支 Y 到合并基础的另一个差异。前者包括没有变化,后者包括从A到B的变化,所以合并结果包括从A到B的变化。

  2. 提交作者被覆盖,这会丢弃贡献。git merge --squash生成一个名为 who did 的新提交git merge --squash。当然,提交内容来自原始提交。这听起来像是在窃取贡献。这成为https://github.com/Microsoft/winfile/pull/42#issuecomment-380681627中的一个问题

什么是正确的用例git merge --squash

0 投票
0 回答
164 浏览

git - 使用 kdiff3 来“保存部分合并”,留下(或添加?)未解决的冲突标记

所需的用例可能是:

  • 通过“git mergetool”启动 KDiff3,它会自动解决大多数冲突
  • 解决 KDiff3 中的其他冲突
  • 使用编程编辑器(例如 VS)解决剩余的冲突

根据 KDiff3 手册,标题是“否”(继续阅读问题焦点!),这似乎是不可能的

只有在所有冲突都解决后才允许保存。[..] 当您退出或开始另一个差异分析并且数据尚未保存时,KDiff3 将询问您是否要保存、取消或继续而不保存。[..如果]您“杀死”KDiff3,那么您的数据将丢失。

但是,问题/重点是:

  • 是什么让这成为 KDiff3 中的禁止操作?“简单”功能可能涉及复杂的解决方案。
  • 是否有其他 3-way diff 工具或 git 命令/方法允许上述用例?这种拆分部分合并编辑方法不太可能是新颖的。
  • 冲突标记是由 Git(例如,在运行合并工具之前)还是由合并工具本身添加的?是这个过程的变体吗?