Git:远程A取消跟踪文件后,拉取远程B时保留本地文件的方法
解决Git拉取时保留指定本地未跟踪文件的问题
遇到这种情况很常见,我给你几个实用的方法,既能顺利从远程B拉取代码,又能保住你需要的本地文件:
方法一:用git stash暂存指定文件(推荐)
git stash不仅能保存已跟踪文件的修改,还能暂存未跟踪文件——只要你明确指定路径就行,完美适配你的需求:
先暂存你想保留的那些未跟踪文件:
git stash push -m "暂存需要保留的本地文件" -- path/to/your/file1 path/to/your/file2这里的
--后面跟着的就是你要保留的文件路径,多个文件用空格分隔即可。现在可以安全地从远程B拉取代码了:
git pull B <你的分支名>拉取完成后,把暂存的文件恢复到本地:
git stash pop这个命令会把之前暂存的文件放回工作区,同时删除对应的stash记录。如果之后还需要查看stash列表,可以用
git stash list。
方法二:临时备份文件到本地目录
如果觉得stash操作有点绕,也可以用最直接的备份方式:
把需要保留的文件复制到仓库外的安全目录(比如桌面):
cp -r path/to/your/file* ~/Desktop/git_backup/执行拉取操作:
git pull B <你的分支名>拉取完成后,把备份的文件复制回仓库对应的位置:
cp -r ~/Desktop/git_backup/* path/to/your/target/dir/
额外提醒:长期避免冲突的小技巧
如果你以后不想再被这些文件干扰,可以把它们加入.gitignore文件,这样Git就会默认忽略这些文件的存在:
编辑
.gitignore,添加你要忽略的文件路径:echo "path/to/your/file1" >> .gitignore echo "path/to/your/file2" >> .gitignore把
.gitignore的修改推送到远程A:git add .gitignore git commit -m "Add ignored files to avoid future conflicts" git push A <你的分支名>注意:这个操作只是让Git忽略本地和远程A里的这些文件,但远程B里的文件依然存在。不过只要你已经通过上面的方法保留了本地版本,加上
.gitignore后,下次拉取B时Git就不会再提示覆盖冲突了。
内容的提问来源于stack exchange,提问作者lanlllt
相关产品推荐
相关产品推荐

