如何将某两个提交去掉父提交的合并
q:在一个两个月前的分支,我想保持纯净,但是需要把另一个变革很大的分支只将某两个提交的变动同步过来,基于idea的git操作该怎么做
a:
其实许多人会一下想到cherry pick,这个确实方便,但是会将父提交连带合并,假如不需要而且变动许多那就不可了。解决方法如下:
使用 git diff 提取补丁并应用
假如你只盼望同步特定提交的变动,而不包括父提交的内容,你可以采取 天生补丁并应用 的方法。这个方法可以让你精确控制同步的变动内容。
步骤 1:获取提交的差异(天生补丁)
打开 Git Log,找到你需要同步的提交。
右键点击该提交并选择 Show Diff,检察该提交的差异内容。
使用 Git 下令天生该提交的补丁:
打开下令行终端(你可以直接在 IDEA 中打开 Terminal)。
运行以下下令,导出该提交的差异为补丁文件(commit-hash 更换为实际的提交哈希):
git diff ^ > patch.diff
这里: 是你想同步的提交的哈希值。
^ 表示该提交的父提交,^ 是获取从父提交到当条件交之间的差异。
这会天生一个补丁文件 patch.diff,它包罗了该提交的变动内容。
步骤 2:应用补丁到目标分支
切换到你盼望同步变动的目标分支(例如两个月前的分支)。
将天生的补丁应用到目标分支上:
bash
复制代码
git apply patch.diff
这会将该提交的变动应用到当前分支,但不会引入父提交的任何内容。
步骤 3:解决冲突并提交
假如应用补丁时出现冲突,Git 会标记冲突的文件,你需要手动解决冲突。
解决冲突后,使用 git add 标记已解决的文件,然后使用 git commit 提交变动。
步骤 4:推送变动
假如你需要将变动推送到远程堆栈,使用 git push 将变动推送到远程。
使用 IntelliJ IDEA 完成
你可以通过 IDEA 的内置终端来实行上述下令:
在 IDEA 中打开 Terminal(终端),使用上述的 git diff 和 git apply 下令来天生并应用补丁。
假如你更倾向于使用 IDEA 的界面,天生补丁后可以手动将其内容复制到修改的文件中,或者通过 IDEA 的合并工具解决冲突。
总结
使用 git diff 和 git apply 的方法,能让你更加精确地控制哪些变动被同步到目标分支,而不会引入不必要的父提交内容。这种方法比直接使用 cherry-pick 更得当只需要同步部门提交的场景。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]