如何取消git pull的fast-forward模式直接删除本地文件?
解决Git Pull自动删除本地文件的问题
首先得明确:你现在遇到的情况是Git认为远程仓库的状态(删除README.md)是“正确”的,所以后续pull会通过fast-forward同步这个删除操作。要阻止它自动删本地文件,得让Git知道你要保留这个文件,并且解决本地和远程的状态分歧,具体步骤如下:
1. 先恢复本地的README.md文件(如果已经被删除)
如果刚才pull后本地的README.md已经没了,先从Git历史里把它找回来:
# 从最近的一次包含该文件的提交中恢复 git checkout HEAD~1 -- README.md
或者如果不确定提交记录,也可以用更简洁的命令:
git restore README.md
这会把文件从Git的对象库中恢复到你的工作区。
2. 让Git确认你要保留这个文件
现在本地的README.md回来了,但远程仓库里它还是被删除的状态。你需要告诉Git,本地的版本是你想要保留的,执行以下操作:
# 将文件重新加入Git跟踪 git add README.md # 提交这个变更,说明你要保留该文件 git commit -m "Keep README.md and restore it in repository"
3. 同步到远程(可选但推荐)
如果你希望远程仓库也恢复这个文件,避免后续再出现类似问题,执行push:
git push
这样远程仓库也会重新有README.md,之后再pull就不会出现自动删除的情况了。
如果你只想本地保留,不想同步到远程
如果你不想让远程仓库恢复这个文件,只是自己本地保留,可以把README.md设为未跟踪状态,同时让Git忽略它的变更:
- 先把它从Git的跟踪列表中移除(不会删除本地文件):
git rm --cached README.md
- 在
.gitignore文件中添加一行,让Git忽略这个文件:
echo "README.md" >> .gitignore
这样Git就不会再跟踪这个文件的状态,后续pull的时候也不会因为远程的删除操作而同步删除本地的文件了。
内容的提问来源于stack exchange,提问作者qianxiaoning
相关产品推荐
相关产品推荐

