Git:在其他分支中拆分提交
我有以下情况:Git:在其他分支中拆分提交,git,Git,我有以下情况: root -- A -- D ------------- H ------master \ \ \ \ \ \ - B -- C -- E -- F -- G -- I -- J -- dev 提交'F'包含一个错误修复,起初似乎与主分支无关,但几周后它被证明是重要的。所有的事情都已经完成了 但另一个问题是,“F”commit包含一些更改,其中只有一个与mast
root -- A -- D ------------- H ------master
\ \ \
\ \ \
- B -- C -- E -- F -- G -- I -- J -- dev
提交'F'包含一个错误修复,起初似乎与主分支无关,但几周后它被证明是重要的。所有的事情都已经完成了
但另一个问题是,“F”commit包含一些更改,其中只有一个与master相关。所以我想说的是:
- 将F拆分为两个单独的提交(一个用于相关更改[F1],另一个用于其他[F2])
- 将F1与master合并
root -- A -- D ------------- H ---K--master
\ \ /-------\--/
\ \ /-F1-F2-\ \-----\
- B -- C -- E ------- F -- G -- I -- J -- dev
(对不起,线条艺术太草率了)我会做以下事情:首先用
--no commit
将F提交给主分支,然后在主分支中进行所需的更改,删除所有其他内容。我知道这听起来不是一个完美的解决方案,但是当将F合并到master时,您还将获得F的所有祖先提交(来自dev分支:eCB):
我会使用手动差异和补丁,有什么问题吗?PS:您应该执行较小的提交;)当然,现在我强制所有开发人员这样做。但与git不同,我无法改变过去。:)
git checkout master
git stash
git cherry-pick --no-commit F
git reset && git add -p
# alternatively reset already staged changes:
git reset -p
git commit
git reset --hard
git stash pop