首页 > 解决方案 > Git:将本地分支与开发合并的正确方法是什么?

问题描述

在合并我的本地代码并推送到远程时,我遇到了几个问题。最大的问题之一是得到很多不相关的类,就好像我在使用以下方法时更改了它们一样:

git add .
git commit -m "commit message"
git pull origin dev
(fix conflicts if occurs)
git push origin feature_branch

我认为我需要使用另一种方法,例如使用远程更新我的本地开发并将我的功能分支与本地开发合并,然后再推送到远程。假设我有一个本地feature_branch功能分支并完成我的更改。在这一点上,以下方法可以还是有正确的方法?

git add .
git commit -m "commit message"
git checkout dev
git pull origin dev
(fix conflicts if occurs or reset my local dev to remote dev)
git checkout feature_branch
git merge dev
git push origin feature_branch

注意:我当然可以使用rebase,但现阶段我只想以merge适当的方式使用。

更新:这是另一种stash用于防止显示不相关更改的方法。这种方法有什么问题吗?

git stash push -m "feature_branch"
git checkout dev
git pull origin dev
(fix conflicts if occurs or reset my local dev to remote dev)
git checkout feature_branch
git merge dev
git stash apply stash@{n}
git add .
git commit -m "commit message"
git push origin feature_branch

标签: gitgithubgitlab

解决方案


您的第二个示例在功能上与第一个示例相同,因为您的本地 dev 分支应该与远程 dev 分支相同,并且只有您的 feature_branch 应该有任何冲突。

所以,你的第一种方法是我推荐的:pull (==fetch origin; merge origin/dev),push。

就个人而言,我通常git pull --rebase; 如果它完美地工作(即没有冲突/通过 rerere 自动解决),你会得到一个很好的本地开发分支,没有一堆合并提交,如果它没有,那么,通常我只是修复 rebase,但如果那是太多的工作,我仍然可以像你一样正常合并。


推荐阅读