无法制定用于评分学生源代码的git工作流程

时间:2014-02-05 01:36:43

标签: git github pull-request git-fork

讲师希望学生将他们的源代码提交给github。每个学生都有自己的回购。我没有推送学生回购。我可以很好地提取他们的源代码,但我想编辑代码并添加注释以帮助他们提高成绩。想以拉取请求的形式向他们提交此修改后的代码。但我无法弄清楚该怎么做。玩弄叉子和东西,但结果是每个学生两个回购(一个在github和一个本地) - 真的很难看。我知道这个论坛不适合要求工作流建议,但我找不到git帮助论坛。任何人都可以指出我可以从git专家那里获得指针吗?

1 个答案:

答案 0 :(得分:1)

  

玩叉子和东西,但最后为每个学生(一个在github和一个本地)的两个回购... ...

这就是Git的运作方式。您克隆远程存储库,在本地处理它,然后推送您的更改。如果您的远程存储库位于GitHub上,并且起源于其他人的存储库,您可以提交拉取请求,以允许原始存储库的所有者查看并可能合并您的更改。

一般来说,您的工作流程看起来像:

  • 学生创建他们的存储库,做一些工作。
  • 在某些时候,你在GitHub上分叉存储库。
  • 克隆此存储库到您的本地系统,您可以在其中进行编辑/评论/等。
  • 将更改更改回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/上花一些时间,那就值几分钟。