2010-11-12 86 views
96

我已付出了父进程衍生出我的github回购:project到儿童:this。现在,我想用家长更新我的孩子最新更新。我能做到吗,如果是的话,怎么办?更新从另一项目

当我更新我的github回购,然后我可以做一个“混帐拉”来更新我的本地回购。

+0

你明白了倒退 - 你在你的本地回购你的工作,然后做混帐推到更新远程。 – Cascabel 2010-11-12 23:38:53

+10

是的,我明白,但是我原来的项目中几乎没有什么变化,我需要将其纳入我的工作副本。这就是为什么我需要更新我的本地回购与原始项目的更新,同时保持我的代码更改本地完好。 – zengr 2010-11-12 23:41:19

+2

这正是我们所有人都解释过的。我只是指出,你不“更新github回购,然后......拉来更新你的本地回购” - 你更新本地回购,然后推到github回购。 – Cascabel 2010-11-12 23:45:38

回答

90

在小孩的本地克隆,从父拉,将其添加为远程,如果你喜欢:

cd child 
git remote add parent <parent-url> 
git pull parent 

父的网址可能是公共github回购,或者你的本地克隆 - 当地的克隆当然会更快。如果您想要拉除除父目录回购的当前HEAD之外的分支,只需添加一个参数(例如git pull parent topic-branch)。如果这是一次性的事情,您可以跳过添加遥控器:git pull <parent-url> [branch]

拉取数据和进行合并,所以一旦你做到这一点的组合,你已经有了一个新的合并提交你大概想在某个时候推回你的公开回购。

这里的关键点,如果现在还不清楚,是从父拉(上游)库是不是从孩子的您的公共克隆,你的当前仓库拉不同。无论采用哪种方式,您都从具有一些通用历史记录的存储库获取数据,并将其合并到当前分支中。当然,因为你正在合并,所以需要一个工作树 - 所以这是必须在你的本地回购中完成的事情。在github上托管的repo本质上是一种发布您在本地完成的工作的方式。你所能做的只是推/拉,然后浏览那里。

+2

我收到了一个错误,“您要求从远程'源'拉,但没有指定分支。因为这不是您当前分支的默认远程配置,所以当我执行'git pull parent'时,您必须在命令行中指定一个分支。你可以通过'git pull parent master'快速浏览它。如果您直接在您的主分支中工作,或者只有一个分支或者不知道分支是什么,并且想要快速合并,这只是一个解决方案。这种新的蜜蜂解决方案或者如果你只是一个快速解决方案来引入一个小的变化。 – 2013-07-03 07:08:55

12

你想:

git pull git://github.com/voldemort/voldemort.git

+0

因此,通过该命令,我的本地回购将会更新,但是我的子项目在github上呢?我会把它推给我的github孩子? – zengr 2010-11-12 23:16:25

+0

@zengr:'git pull'是'git fetch'和'git merge'的组合。实际上,它将远程存储库中的分支合并到当前分支中。就像您在本地存储库中执行的任何其他工作一样,要将其传送到远程,您可以按下它。 – Cascabel 2010-11-12 23:17:35

+0

正如其他人所建议的那样,'git remote add parent',与刚刚'git pull'的方法有什么不同? – zengr 2010-11-12 23:23:59

15
  1. 克隆你的回购到本地机器上,如果你还没有:git clone [email protected]:utkarsh2012/voldemort.git
  2. 添加上游作为一个新的远程:git remote add upstream git://github.com/voldemort/voldemort.git
  3. 随着您的分支签出,拉动上游到您的分支,这将在两组更改之间创建合并:git pull upstreamgit pull upstream branch-to-merge。如果你在一个unpushed分支工作,你也可以使用git fetchgit rebase衍合你的工作,而无需进行合并。
3

这也可以在GitHub的Web界面做简单:发出拉动请求但交换基地回购头回购。如果拉动可以自动执行,它会。

+5

**警告**如果您这样做,它将在您的分叉项目中添加一个提交。所以你最终会在父项目之前做出一次提交。 – 2015-08-05 14:25:13