git:2个开发人员在master分支上工作:(

时间:2011-04-24 09:52:24

标签: git

好吧,我没有遵循最佳做法,现在我已经陷入困境,不知道该怎么做。

我在master分支上工作,另一个开发人员做了同样的事情。他将他的变化推向了原点/主人。我没有推动我的,但只是在当地做了几次提交。现在我的工作目前没有更多的发展工作了。我该怎么清理这个?

是否足以在我身边做一个获取以获得最终修改在origin / master上而不会弄乱整个东西?

3 个答案:

答案 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 origingit 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'组合'在新主分支结束时的所有提交,而合并将使它们出现穿插(因为它们发生在时间上,所以按时间顺序记录,而不是拓扑顺序。

干杯