0

在这个学期,我们正在使用 Git 让学生完成他们的作业。基本上,我们在中央服务器上为每个学生建立了一个裸存储库,其中包括作业的骨架代码。然后,学生可以克隆项目、完成作业并将更改推送回服务器。

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

谢谢!

4

2 回答 2

0

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

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

# 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 等)将每个学生的遥控器添加到单个存储库,然后将更改推送到每个学生的遥控器。

于 2013-09-04T02:22:37.010 回答
0

我建议指导学生不要master动他们的分支,因为它可能随时被老师覆盖。他们对任何特定任务的更改应始终在分支上完成,并定期rebase针对最新更改进行 d,master以确保他们正在使用最新版本的测试等。

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

于 2013-09-04T02:25:23.943 回答