我和同事在同一个分支机构工作。现在我已经提交了一些文件并发送给代码审查,因此还有其他一些同事。现在他在我之前推送他的代码。我现在需要撤回他的更改,然后添加我的更改。但它已经承诺了。
如何获得他的更改,然后添加我的更改,而不会让历史看起来很糟糕,而且我不得不跳槽?我是git的新手。
答案 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