git:将合并分成几个提交
git: splitting merge into a few commits
我做了一个 git merge --squash other_branch
(我在使用 git 处理 svn 存储库时使用了 squash)。
现在我有(合理的)冲突的基调,我需要非常小心地完成它。
我正在尝试想出一些聪明的方法来处理所有这些混乱情况,并可能与其他人分享一些工作。
我想到的是将这个合并分成几个提交。
一旦它们看起来不错,我想提交一些原子更改,它们有意义并且可编译。
但是我不太确定我怎样才能做到这一点。
我必须暂存就绪文件,然后 git stash
所有其他文件以查看暂存文件是否正在编译,然后 git commit
最后 git stash pop
继续处理其余文件。
Git 但是不允许我隐藏未合并的路径。
我在 google 上找不到任何现成的收据。看起来每个人都一次 git merge
。
有人知道或已经进行了这样的合并吗?
假设您要合并到一个分支 target
。
您可以在临时分支中提交合并结果,包括其冲突:
A---B - target
\---C - tmp
并以较小的块签出要为下一次合并提交处理的文件:
$ git checkout target
$ git checkout tmp -- conflicting_file
然后处理 conflicting_file
中的冲突,并在您的 target
分支中解决冲突:
A---B---D - target
\---C - tmp
然后再次检查 tmp
中的下一个冲突文件,继续直到解决所有冲突。
我做了一个 git merge --squash other_branch
(我在使用 git 处理 svn 存储库时使用了 squash)。
现在我有(合理的)冲突的基调,我需要非常小心地完成它。
我正在尝试想出一些聪明的方法来处理所有这些混乱情况,并可能与其他人分享一些工作。
我想到的是将这个合并分成几个提交。 一旦它们看起来不错,我想提交一些原子更改,它们有意义并且可编译。
但是我不太确定我怎样才能做到这一点。
我必须暂存就绪文件,然后 git stash
所有其他文件以查看暂存文件是否正在编译,然后 git commit
最后 git stash pop
继续处理其余文件。
Git 但是不允许我隐藏未合并的路径。
我在 google 上找不到任何现成的收据。看起来每个人都一次 git merge
。
有人知道或已经进行了这样的合并吗?
假设您要合并到一个分支 target
。
您可以在临时分支中提交合并结果,包括其冲突:
A---B - target
\---C - tmp
并以较小的块签出要为下一次合并提交处理的文件:
$ git checkout target
$ git checkout tmp -- conflicting_file
然后处理 conflicting_file
中的冲突,并在您的 target
分支中解决冲突:
A---B---D - target
\---C - tmp
然后再次检查 tmp
中的下一个冲突文件,继续直到解决所有冲突。