讲师希望学生将他们的源代码提交给github。每个学生都有自己的回购。我没有推送学生回购。我可以很好地提取他们的源代码,但我想编辑代码并添加注释以帮助他们提高成绩。想以拉取请求的形式向他们提交此修改后的代码。但我无法弄清楚该怎么做。玩弄叉子和东西,但结果是每个学生两个回购(一个在github和一个本地) - 真的很难看。我知道这个论坛不适合要求工作流建议,但我找不到git帮助论坛。任何人都可以指出我可以从git专家那里获得指针吗?
答案 0 :(得分:1)
玩叉子和东西,但最后为每个学生(一个在github和一个本地)的两个回购... ...
这就是Git的运作方式。您克隆远程存储库,在本地处理它,然后推送您的更改。如果您的远程存储库位于GitHub上,并且起源于其他人的存储库,您可以提交拉取请求,以允许原始存储库的所有者查看并可能合并您的更改。
一般来说,您的工作流程看起来像:
请注意,在此工作流程中,您有学生存储库的时间点快照。也就是说,如果他们在您的工作后进行更改,它们将不会自动合并到您的存储库中。如果要从学生中提取其他更改,则需要将其他远程添加到本地存储库,并将其中的更改合并到本地分支中。如果您认为自己想要这样做:我会先解决基本的fork / clone / edit / push / pull请求工作流程,然后考虑将其作为一个新问题打开。
<强>更新强>
将原始存储库中的新更改提取到fork中:
在本地存储库中,运行:
$ git remote add upstream <original_clone_url>
其中<original_clone_url>
是原始存储库GitHub页面右侧 HTTPS clone URL 字段中显示的内容。
引入新的更改:
$ git fetch upstream
$ git merge upstream/master
这会将“上游”存储库中的更改合并到本地存储库中。然后:
$ git push
将这些更改推送到github上的您的分叉存储库(在适当的时候您可以从中生成拉取请求)。
事实证明,GitHub已经很好地记录了整个过程here。如果你没有在http://help.github.com/上花一些时间,那就值几分钟。