我正在从Coursera上网。这是我第一次使用git(我经常使用SVN),我遇到了一些问题。
该类的编程分配位于具有结构的github存储库中。
class/assignments/assignment1
class/assignments/assignment2
...
assignmentsX文件夹包含学生修改并提交以进行评分的骨架。当类首次启动时,可能只有assignment1,然后添加赋值2,然后添加赋值3,....但是,在添加赋值1之后,内容可以更新,并且学生将进行本地更改,而不是想要输。显然,学生从不检查他们对GitHub主存储库的更改。鉴于这种结构,我有以下问题:
如何保持assignmentX的本地副本与教师可能做出的更改保持同步,而不会丢失我的更改。我尝试合并,但这对我来说效果不佳。也许我的SVN背景正在阻碍。
添加其他作业时,最好的方法是下拉它们。我尝试使用Fetch,但没有拉新文件夹。
答案 0 :(得分:1)
1.如何保持assignmentX的本地副本与教师可能做出的更改保持同步,而不会丢失我的更改。我试着合并 但这对我来说效果不佳。也许我的SVN背景是 挡路。
您需要执行pull
来获取存储库中的远程更改。要么教授需要在他/她做出改变时告诉你,要么你需要检查自己是否有变化。
如果更改可能与您的本地更改发生冲突,那么我建议您在本地存储库中创建一个用于更改的分支。这样您就不必担心合并冲突。分支在git中是一个巨大的交易,这与SVN有很大的不同。我强烈建议你学习如何使用它们(它们非常容易)
2.添加额外作业时,最好的方法是什么。我尝试使用Fetch,但是没有拉新文件夹。
Fetch提取更改,但不合并它们。因此,您必须fetch
然后merge
或pull
,这两者同时执行这两项操作。
答案 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