Pau*_*per 6 git git-merge git-workflow
我正在与主人一起工作(与其他人一起).
A - B - C - F - G (master)
\
D - E (branch-a)
Run Code Online (Sandbox Code Playgroud)
我们会定期将master合并到分支中,以便以后最大限度地减少冲突.
A - B - C - F - G (master)
\ \
D - E - H (branch-a)
Run Code Online (Sandbox Code Playgroud)
最终,我们将要合并回来.
A - B - C - F - G - I - K - M - N (master)
\ \ \ /
D - E - H - J - L - O (branch-a)
Run Code Online (Sandbox Code Playgroud)
什么是我可以合并回主人最干净的方式?
branch-a,因此提交哈希值可以改变.H,我想不包括合并提交(例如L),没有冲突的合并.理想情况下,它看起来像这样(假设没有冲突):
A - B - C - F - G - I - K - M - N (master)
\ /
D - E - J - O
Run Code Online (Sandbox Code Playgroud)
关于如何做到这一点的任何想法?
(仅供参考,这是关于我的工作流程的问题.如果我之前应该做其他事情,这也是一个合理的答案.)
更新:
在考虑了这个之后,我意识到这通常是不可能的.
例如,如果J更改了更改的行G,则无法获取该历史记录.
下一个最好的选择是拥有这段历史:
A - B - C - F - G - I - K - M - D - E - J - O (master)
Run Code Online (Sandbox Code Playgroud)
从本质上讲,这是一个rebase,但省略了不必要的合并提交.
您可以手动完成此操作,方法是分支E并挑选其他提交到新分支,然后将其合并到master. 变基也是可能的,即做
git rebase C
Run Code Online (Sandbox Code Playgroud)
在branch-a。但是,这将从您的功能分支中获取提交master并将它们放在您的功能分支上。
git rebase -i C
Run Code Online (Sandbox Code Playgroud)
具有相同的效果,但允许您跳过您不来自master且不需要的提交branch-a。Git 通常无法知道提交是否以任何方式交互(例如,对一个文件的更改可能需要对在 上完成的另一文件进行更改master),因此没有针对此问题的自动防故障解决方案。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |