我已经在Dev分支上创建了一个名为“multiple_fixes”的分支,并且已经在那里工作了几个星期。当我在我的分支上工作的时候,其他几个人在我创建分支之后也创建了分支,并且从那时起向Dev分支发出了拉取请求。现在,我已准备好将我的变更合并到Dev中,但是我有许多档案是目前Dev分支的下层。如果我执行提取要求,我将会复原其他人已签入的所有变更。如何将Dev的当前更改拉入我的分支,而不覆盖我的工作?
os8fio9y1#
合并两个分支不会覆盖一个分支的更改。Git会执行一个 * 三向合并 *,并尝试合并更改。这在大多数情况下有效,但也可能失败;特别是在两个分支中更新了同一行或者修改了两个非常接近的行时。
8yparm6h2#
在合并之前你应该执行rebase,它会将目标分支的提交合并到当前分支。如果有冲突,git会自动启动冲突解决器,默认编辑器。
git rebase origin dev git push -f
或
git fetch --all git checkout dev git pull git checkout multiple_fixes git rebase dev git push -f
-f标记可以防止在pull-push上重复提交,如果您的分支/存储库设置允许的话,如果不允许,请使用git pull; git push
-f
git pull; git push
2条答案
按热度按时间os8fio9y1#
合并两个分支不会覆盖一个分支的更改。Git会执行一个 * 三向合并 *,并尝试合并更改。这在大多数情况下有效,但也可能失败;特别是在两个分支中更新了同一行或者修改了两个非常接近的行时。
8yparm6h2#
在合并之前你应该执行rebase,它会将目标分支的提交合并到当前分支。如果有冲突,git会自动启动冲突解决器,默认编辑器。
或
-f
标记可以防止在pull-push上重复提交,如果您的分支/存储库设置允许的话,如果不允许,请使用git pull; git push