好吧,我没有遵循最佳做法,现在我已经陷入困境,不知道该怎么做。
我在master分支上工作,另一个开发人员做了同样的事情。他将他的变化推向了原点/主人。我没有推动我的,但只是在当地做了几次提交。现在我的工作目前没有更多的发展工作了。我该怎么清理这个?
是否足以在我身边做一个获取以获得最终修改在origin / master上而不会弄乱整个东西?
答案 0 :(得分:4)
你应该能够从原点做一个git pull。它会将新内容合并到您的本地分支中。然后,您也可以将提交的本地更改推送到原点。如果有任何冲突,git会警告你这一点,并将标记它们,以便您可以手动解决它们。没有必要担心,因为这正是git制作和擅长的东西。
答案 1 :(得分:2)
如果您运行git fetch origin
,则会更新origin/master
和所有其他远程跟踪分支。 (它们基本上就像origin
上那些分支状态的缓存。)
现在,如果您只是git merge origin/master
,那么您应该可以git push origin master
,因为现在master
的历史记录将包含来自{{1}的master
的历史记录}}
如果你对保留线性历史记录(许多人似乎都是这样)感到困扰,那么在推送之前你会origin
。
作为执行git rebase origin/master
然后git fetch origin
或git merge origin/master
的(近似)快捷方式,您可以这样做:
git rebase origin/master
......或:
git pull origin master
...但我个人认为单独获取和合并/ rebase更清楚。
答案 2 :(得分:1)
将您的更改重新定位到新主服务器上,然后按
git rebase origin/master
git push origin
当然,如果存在任何合并冲突,您必须解决它们(在解析git rebase --continue
之后,但该工具会告诉您如何解决它)。
如果您愿意,可以合并分支(即使您从主服务器克隆了分支,它仍然是仍然您的分支):
git merge origin/master
git push origin
你将拥有相同的合并和可能相同的冲突,但历史将略有不同:一个rebase'组合'在新主分支结束时的所有提交,而合并将使它们出现穿插(因为它们发生在时间上,所以按时间顺序记录,而不是拓扑顺序。
干杯