修改git repo以允许更新而不覆盖特定文件

时间:2017-03-19 01:17:04

标签: git github

背景

我有一个不寻常的场景,因为我有一个我的学生已经拉过的主回购。这意味着拓扑结构是1个主节点和70个子节点。

repo包含一些练习文件,例如:

def write_this_code_good():
    """Explanation of what to do."""
    pass

以及测试这些文件的其他文件。由于间歇性的愚蠢行为,我在测试中犯了一些错误,我现在已经修复了。

我也一直在使用这个回购来展示如何完成练习(我告诉过你我是间歇性的白痴)。这意味着我的更改在更改后的日期更改。

我们在这里处理的所有提交都已提交并推送。

问题

我希望学生能够将父级回购添加为上游并从中拉出来。但是,在我的测试中,我在演示中提交的提交正在覆盖他们的工作。

我已经尝试了

我试过还原。这样做可以将repo的状态恢复到它们获得它的状态,但是,因为它增加了另一个提交,如果他们撤消它也会重置他们的repo。 (而不是保持不变。)

想的我需要

我认为我需要实际删除某些文件的提交,以便不应用差异。

问题[s]

  1. 我的直觉是否正确?这是解决问题的正确方法吗?
  2. 我如何实现这一目标?
  3. 做任何GUI工具支持吗? (真的很高兴看到我在这样复杂的场景中做的事情)

1 个答案:

答案 0 :(得分:1)

无需还原。

他们所需要的只是将您更新的仓库添加为上游,从中获取,并在更新的上游/主数据库之上进行重新定位

cd /path/to/a/student/repo
git checkout a_student_branch
git remote add upstream /url/of/your/updated/repo
git fetch upstream
git rebase upstream/master

如果学生直接克隆了您的回购,那么就不需要新的"上游" remote:他们可以直接从原点获取和重新绑定。