如何拉除除一个以外的所有文件?

时间:2015-06-25 22:52:11

标签: git git-pull

我想提取除一个文件(下面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

2 个答案:

答案 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更新该文件,您仍可使用以下解决方法:

  • 制作别名&#39; gpu&#39;调用脚本
  • 制作一个将该文件保存在其他地方的脚本,执行git pull,用保存的文件覆盖该文件(这样,不会从stash pop解决冲突)