使用带有readonly存储库的git

时间:2014-07-02 20:57:53

标签: git github version-control

我正在从Coursera上网。这是我第一次使用git(我经常使用SVN),我遇到了一些问题。

该类的编程分配位于具有结构的github存储库中。

class/assignments/assignment1
class/assignments/assignment2 
...

assignmentsX文件夹包含学生修改并提交以进行评分的骨架。当类首次启动时,可能只有assignment1,然后添加赋值2,然后添加赋值3,....但是,在添加赋值1之后,内容可以更新,并且学生将进行本地更改,而不是想要输。显然,学生从不检查他们对GitHub主存储库的更改。鉴于这种结构,我有以下问题:

  1. 如何保持assignmentX的本地副本与教师可能做出的更改保持同步,而不会丢失我的更改。我尝试合并,但这对我来说效果不佳。也许我的SVN背景正在阻碍。

  2. 添加其他作业时,最好的方法是下拉它们。我尝试使用Fetch,但没有拉新文件夹。

3 个答案:

答案 0 :(得分:1)

  

1.如何保持assignmentX的本地副本与教师可能做出的更改保持同步,而不会丢失我的更改。我试着合并   但这对我来说效果不佳。也许我的SVN背景是   挡路。

您需要执行pull来获取存储库中的远程更改。要么教授需要在他/她做出改变时告诉你,要么你需要检查自己是否有变化。

如果更改可能与您的本地更改发生冲突,那么我建议您在本地存储库中创建一个用于更改的分支。这样您就不必担心合并冲突。分支在git中是一个巨大的交易,这与SVN有很大的不同。我强烈建议你学习如何使用它们(它们非常容易)

  

2.添加额外作业时,最好的方法是什么。我尝试使用Fetch,但是没有拉新文件夹。

Fetch提取更改,但不合并它们。因此,您必须fetch然后mergepull,这两者同时执行这两项操作。

答案 1 :(得分:0)

  

我尝试合并,但这对我来说效果不佳。

那是怎么回事。您需要获取远程更改,并将它们合并到本地分支中。您可以使用git pull一次执行这两个步骤,然后获取并合并当前分支设置为跟踪的分支(如果有)。

  

在添加其他作业时,最好的方法是下拉它们。我尝试使用Fetch,但是没有拉新文件夹。

git fetch有效地使您的存储库了解远程存储库中的更改(特别是新提交,分支和标记)。它实际上并没有将这些更改应用到您自己的分支。你需要merge来实现这一目标。

答案 2 :(得分:0)

如果您的本地brach正在跟踪远程分支,git pull操作将为您执行提取和合并。否则什么都不会合并。如果您希望将更改完全分开并且不与教师合并,只需进行提取即可。教师添加/更改将不会合并到您的本地brach(es)。如果您想检查教师提供的内容,您可以根据教师的更新结帐新分支:

git checkout -b new_local_branch remotes/origin/instructor_branch

或者你甚至可以将教师分支的本地副本作为一个独立的头部(你不能承诺):

git checkout remotes/origin/instructor_branch