将更改推送到其他裸存储库

时间:2013-09-04 02:05:37

标签: git

在本学期,我们使用Git让学生完成作业。基本上,我们在每个学生的中央服务器上设置一个裸存储库,其中包括分配的框架代码。然后学生可以克隆项目,完成任务,并将更改推回服务器。

然而,有时在我们创建了裸存储库(并且学生可能已经推动了更改)之后,我们发现可能需要更改任务本身,因此我们发现有必要更新每个学生的裸存储库。到目前为止,我们没有任何好办法。我只是想知道这个问题的最佳解决方案是什么,所以我们可以最大限度地减少工作(特别是对于之前可能没有使用过git的学生)。 / p>

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您不介意让学生更新他们的本地存储和远程分支,那么您可以更新单个远程存储库并让每个学生从中获取,合并更改,然后推送到他们自己的分支。 / p>

以下是您需要为遥控器进行的更改:

# Add some changes, then commit them
git checkout master
git add .
git commit -m "Update assignment"

以下是每个学生需要做的事情:

git fetch remote
git merge remote/master
git push personal-fork head

或者,你可以编写一个脚本(比如Bash,PHP,Perl,Python,Ruby等)将每个学生的远程数据库添加到一个存储库中,然后将更改推送给每个学生。远程。

答案 1 :(得分:0)

我建议指导学生离开他们的master分支,因为它可能随时被教师覆盖。他们对任何特定任务的更改应始终在分支上进行,并定期rebase对照master中的最新更改,以确保他们使用的是最新版本的测试等等。

在管理方面,您可以在主工作目录中为每个学生的回购定义一个遥控器:https://stackoverflow.com/a/4255934/54249。当您需要共享更改时,强制推送到每个学生的master分支应该可以解决问题。