3

我对 Git 很陌生,到目前为止非常喜欢它,但不确定在这里做什么。

我已经分叉了一个 github 项目,目前正在将其移植到另一种语言。作为参考,我创建了一个代码分支,就像我创建分叉时一样。我现在的问题是原始项目已经更新,我不知道如何将这些更改从原始 master 拉到我的分支中(因为 'origin' 指向我的 github 项目)。

我自己的教育的后续问题,原始项目的所有者必须运行什么命令才能将更改从我的分支拉入他的主分支?

编辑:当我从我自己的“主”分支运行它们时,这些答案有效,但当我从我的“跟踪”分支运行它们时不起作用(我在这里松散地使用这个术语,因为我知道一个同名的 git 命令。不过,不确定它的作用)。

当我在我的非主分支中运行git fetch upstream时,什么也没有发生。当我尝试git fetch upstream:master时,它说

ssh: upstream: no address associated with name
fatal: The remote end hung up unexpectedly
4

4 回答 4

4

您可以使用以下命令添加原始存储库git remote

$ git remote add upstream http://github.com/user/repo.git

(您可以upstream根据需要将其命名为其他名称,但这是您用来指代遥控器的名称。)

要获取更新,只需运行:

$ git fetch upstream

为了将您的 repo 中的更改导入上游 repo,维护者必须将您的 repo 添加为远程,然后拉取更改:

$ git remote add drhorrible http://github.com/youruser/yourrrepo.git
$ git pull drhorrible your-branch:master

或者,如果上游维护者不想将您的 repo 添加为远程,他可以直接引用它:

$ git pull http://github.com/youruser/yourrepo.git your-branch:master
于 2010-05-06T05:17:17.550 回答
1

您可以将其添加到远程存储库列表中并从中获取/拉取

$ git remote add first-repo-name git://github.com/first-repo-name/repo.git
$ git fetch first-repo-name
# or:
$ git pull first-repo-name

实际上会将 first-repo-name master 分支合并到git pull您的 master 分支(如果您当前在该分支中)

原始项目的所有者必须运行什么命令才能将更改从我的分支拉入他的主分支?

在 GitHub 方面,这不是一个实际的命令,而是您发起的拉取请求的结果。

替代文字
(来源:skitch.com

从技术上讲,他可以将您的分叉存储库作为远程存储库添加到他的本地存储库中(就像您在上面所做的那样),但是如果他的存储库被大量分叉,这将变得不切实际,因此中央“拉取请求”机制。

于 2010-05-06T05:15:07.003 回答
0

Git 应该像这样工作,您将更改从您的源(无论是分叉的 repo 还是原始的)拉到您的本地 master 中。然后,您将使用 git-merge 或 git-rebase 将它们放入您的本地分支。一旦你对结果感到满意,你就可以推回遥控器。

我认为从您提出问题的方式来看,在您从原始存储库中提取更改后,您最好使用 git-rebase 将您的分支重新设置在 master 上。

如果您尝试从命令行执行所有这些操作,您将需要学习 git-cherry。否则,像 gitx 或 gitk 这样的工具对于选择要合并的提交非常有帮助。

于 2010-05-07T18:50:25.667 回答
-1

Github 的分叉帮助很好地解释了这一点:

http://help.github.com/forking/

于 2010-06-23T08:58:33.380 回答