在同一个分支上工作,如何在不丢失变化的情况下拉动?

时间:2015-05-22 07:03:50

标签: git git-commit git-pull

我和同事在同一个分支机构工作。现在我已经提交了一些文件并发送给代码审查,因此还有其他一些同事。现在他在我之前推送他的代码。我现在需要撤回他的更改,然后添加我的更改。但它已经承诺了。

如何获得他的更改,然后添加我的更改,而不会让历史看起来很糟糕,而且我不得不跳槽?我是git的新手。

3 个答案:

答案 0 :(得分:9)

您可以使用git pull --rebase。这将获取你的同事提交,然后将你的提交(你没有推动)放在他们之上,保持历史也很好。

编辑:Cyril CHAPON在评论中提出了一些好处。看看他的一些链接,以充分了解rebase如何工作并避免陷阱。

答案 1 :(得分:1)

如前所述,您可以执行git pull --rebase,但也有不同的方法: 想象一下你的历史现在看起来像这样:

A -> B -> C -> D | | local master remote/master 您可以执行以下操作:

$ git branch save_state $ git reset --hard C 基本上这会带你到

A -> B -> C (remote/master) \ -> D (local save_state)

您知道将更改从远程拉到主控

$ git pull origin master

这将导致快速合并(历史​​是清理到这里) 并且知道你可以做一个

$ git checkout save_state $ git rebase master $ git checkout master && git merge save_state 你可以毫无问题地在这里重新定义这个分支,因为它还没有被推到远程。

答案 2 :(得分:0)

git pull

这将从远程服务器获取更改,将它们本地引入您的计算机,然后将其工作与您的工作合并。这将在历史中提供一个联接:一个分支与您的工作,一个与他的,然后在两个合并时的连接。如果有必要,Git会给你机会解决任何冲突,但它可以很好地自动合并。

我强烈建议您阅读:https://git-scm.com/book/en/v2