github上有两个远程回购:
repo_course
:课程讲师定期发布新的任务框架代码;
repo_me
:我自己的完成作业代码评分;
它的工作方式如下:
git clone <repo_me url>
:在我的计算机上创建本地工作仓库,这是空的
git add remote skeleton <repo_course url>
git pull skeleton master
:获取骨架代码,完成它,并将push
添加到repo_me
我的问题是:
假设我拉skeleton.java
并重命名或删除它,然后我再次git pull skeleton master
,它将无法恢复。这是为什么?似乎pull
将在上一次pull
上添加新的骨架文件一次。这样设计的好处是什么?
如果我确实需要从repo_course
恢复已删除的文件,我该怎么办?
如果您希望重播您的作品,而不是将其工作合并,请尝试(使用Git 2.9或更高版本):
git config --global pull.rebase true
git config --global rebase.autoStash true
然后一个简单的git pull将在你提取的内容上重放(rebase)你的本地提交(包括你的文件重命名)。
“为什么git pull不会'恢复已删除的文件?
因为合并将覆盖与合并的内容的本地修改(如文件重命名)。 与rebase相反,rebase将取决于你所拥有的本地工作(如文件重命名)。