我的主管说将问题合并到主分支中,首先我应该
git fetch
git checkout main-branch
git reset --hard origin/main-branch # ???
git checkout my-branch
git merge main-branch
这似乎可以正确地快进合并我的本地主分支以匹配原点。为什么是这样?不应该是
git merge origin/main-branch
或
git pull origin main-branch
有什么区别?
答案 0 :(得分:2)
git fetch
将更新远程分支以包含所有新提交。因此origin/main-branch
将在之后更新。因此,当您切换到本地main-branch
并重置为远程分支时,您现在将本地分支从远程重置为更新的分支。
通常,您会在git pull
上使用main-branch
来获得此效果。这也有很大的好处,如果您有一些未包含在远程分支上的本地提交,它们将自动合并。因此,要小心因为使用reset --hard
会导致提交丢失。
顺便说一下。 git pull
基本上与git fetch
后跟git merge
相同,所以要么很好。如果您想要更新多个远程分支,则手动运行git fetch
会有所帮助(因为git fetch
默认情况下会抓取所有远程分支)。
另一个非常安全的选择是使用git pull --ff-only
。这是我在更新本地分支时通常会做的事情,我不希望有任何本地提交。如果你碰巧有一个不属于远程分支的本地提交,它会给你一个警告,不会合并任何东西。因此,您可以首先弄清楚提交的来源,例如,如果您不小心提交错误的分支或其他内容。
答案 1 :(得分:0)
组合
git fetch
git checkout main-branch
git merge origin/main-branch
与
基本相同git checkout main-branch
git pull
所以这似乎比git reset --hard origin/main-branch
好多了,它只会抛弃任何本地提交。
以下
git checkout my-branch
git merge main-branch
将主要分支的变化合并到我的分支。
要“将问题合并到主分支”,您应该这样做(假设问题已在my-branch
上修复)
git checkout main-branch
git merge my-branch