2017-04-17 38 views
1

我正在与我的合作伙伴一起开发应用程序,我们正在使用github来同步我们的项目,但我们之前都没有使用过github,并且出现了一个问题。我和我的合作伙伴是从最后一次推送中同步的,但是我们分别处理了不同的事情,现在我们需要弄清楚如何合并我们的两个版本。因此,它看起来有点像这样:从GitHub中拉取而不覆盖某些文件

---- B ----| 
A --|   |--- D 
    ---- C ----| 

A国是,当GitHub的仓库有这样的我们有一个共同的代码。

然后,我们俩拉到并在代码的不同部分的工作,创建了两个截然不同的状态B和C.现在

,我们需要把我们两个国家合并为d,其中有我们有两个部分从事。
状态B被推送,这不是我所拥有的,但我在B推送之前知道了B所需的所有内容。

任何帮助表示赞赏。

+0

虽然还有与解决这个特定问题有关的另一个答案,我也想说,如果你正在分别处理不同的事情,你可能想看看使用分支。可以使用分支针对同一个父级开发单独的更改集(比如对一个特征进行多次提交),然后稍后将其合并。 –

+0

非常感谢@GarethPulham。我会研究这一点,并与我的合作伙伴交谈。 – acn3

回答

0

你们其中一个人将能够推动没有任何问题。

另一个将有一个错误消息邀请他/她先拉。

hint: Updates were rejected because the remote contains work that you do 
hint: not have locally. This is usually caused by another repository pushing 
hint: to the same ref. You may want to first integrate the remote changes 
hint: (e.g., 'git pull ...') before pushing again. 

我会建议:

git pull --rebase 
git push 

这将重播上的更新上游主分支的顶部您的本地提交。

实际上,因为git 2.9 or more,你可以设置(一次):

git config --global pull.rebase true 
git config --global rebase.autoStash true 

然后你可以通过一个简单的经典git pull更换git up

当您同时开展相同的开发工作(如此相同的分支)并需要保持最新的常用工作时,此工作流程非常有用。

+0

这最终覆盖了状态B,它已经被推动,没有先从B获得任何东西。 – acn3

+0

@ acn3奇怪,考虑拉取先取:B是原点/ commonBranch。然后你在原始/共同分支之上重放你的提交。假设你有一个共同的分支,你要推。 – VonC

+0

我们有一个共同的分支。在做了git pull --rebase之前,我做了git add [files]和git commit。我不应该这样做吗? – acn3

相关问题