我想提取除一个文件(下面GNUmakefile
)以外的更改。我查看了git-pull(3)
手册页,但这个选项并不适合我。
如何提取所有更改,但跳过导致git问题的文件?是否可以选择"忽略有冲突的文件"或"忽略文件X"或者类似的?
(最糟糕的是,GNUmakefile
被复制/粘贴在虚拟机之间,因此它们几乎是同一个文件。cryptopp-rw
的makefile在添加了一些依赖项配方。结束了。)
cryptopp-rw$ git pull
remote: Counting objects: 7, done.
remote: Total 7 (delta 4), reused 4 (delta 4), pack-reused 3
Unpacking objects: 100% (7/7), done.
From https://github.com/weidai11/cryptopp
4206b4a..cf08f3e master -> origin/master
Updating 4206b4a..cf08f3e
error: Your local changes to the following files would be overwritten by merge:
GNUmakefile
Please, commit your changes or stash them before you can merge.
Aborting
答案 0 :(得分:3)
你可以存储当前工作树,然后进行拉动,这样就可以防止git抛出错误并中止进程。拉动后,您可以使用以下命令恢复存储的文件:
git stash pop stash@{<revision>}
或者,如果此解决方案需要一些您想要阻止的额外步骤,则可以通过覆盖已存在于git存储库上的文件来忽略导致问题的文件:
git checkout HEAD^ file/to/overwrite
git pull
或者您可以尝试使用-f
命令:
git pull -f
答案 1 :(得分:1)
考虑到即使git update-index --skip-worktree
无法阻止git pull
更新该文件,您仍可使用以下解决方法:
gpu
&#39;调用脚本stash pop
解决冲突)