Github: 克隆仓库后如何进行派生(fork)操作?

56

我将git仓库克隆到本地机器上,并对其进行了一些操作,发现它很酷。

现在我想将修改后的结果保存在我的github空间中。我该怎么做?

我想正常的方式应该是先将仓库fork到我的空间,克隆它,修改,然后推送到GitHub,但现在我克隆了原作者的仓库,我如何将其提交为我个人的新内容?


2
你可能想了解更多关于远程仓库的内容:https://git-scm.com/book/zh/v2/Git-基础-远程仓库的使用。 - Felix Kling
3个回答

79

首先将旧的远程仓库重命名为upstream,这样你就可以保持与原始代码库同步。

git remote rename origin upstream

然后将您复制的存储库添加为源:

git remote add origin https://github.com/<your-username>/<your-project>
如果您正在使用ssh:
git remote add origin git@github.com:<your-username>/<your-project>.git

推送到你的代码库:

git push -u origin master

从基础存储库拉取:

git pull upstream

我建议您在单独的分支中完成所有工作,而不是在主分支上。这将使得如果您想发起一个拉取请求时更容易基于upstream/master分支进行变基。

您并不一定需要将 origin 重命名为 upstream - 远程名称可以是任意的,不过我建议您这样做以遵循 GitHub 使用的命名约定


嗨,我认为我已经完成了这些步骤,现在当我输入 git status 命令时,会收到关于 upstream 的通知,而不是 origin。如果我已经与 origin 同步,我希望它显示我已经同步。有什么建议吗? - Aurimas
1
你尝试过检查你的分支 git checkout <my_branch> 并输入:git branch --set-upstream-to origin/my_branch 吗? - jeremija
1
如果您想覆盖 origin,请使用以下命令:git remote set-url origin <your repo> - Jordan Mackie
谢谢!我注意到你实际上被迫重命名原始名称,否则你会得到“fatal: remote origin already exists”的错误提示。 - Adam
一直想知道如何轻松地将我的分支项目与主仓库保持同步。将其作为开源工作流程的一部分绝对值得保留! - Matthew S

3
在github网站上按照惯例创建一个fork。然后前往你的仓库并添加一个指向你的fork的远程地址:git remote add myfork git@github.com:you/your-fork.git。这将添加一个名为“myfork”的远程地址,你可以将其推送到。你也可以更改“origin”分支的url;这将让你得到与从你的fork克隆开始完全相同的状态:git remote set-url origin git@github.com:you/your-fork.git

我是从Github Desktop打开的powershell,然后按照前两个步骤进行了操作。更名和添加(使用第一个建议,没有SSH)。我可以尝试使用SSH(git@github...)再次操作吗?这样做会有什么危害吗?有没有办法知道我是否应该使用SSH?无论如何,在第三步之后,当我输入:git push -u origin master时,我遇到了以下错误: error: src refspec master does not match any. error: failed to push some refs to https://github.com/myname/myproj我该怎么办? - pashute

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接