How to pull for all files except one?

14.3k views Asked by At

I want to pull changes except for one file (GNUmakefile below). I've looked at the git-pull(3) man pages, but the option is not readily apprent to me.

How do I pull all changes, but skip the file that's causing git trouble? Is there an option to "ignore files with conflicts" or "ignore file X" or similar?

(The worst part is, the GNUmakefile was copied/pasted between virtual machines, so they are nearly the same file. cryptopp-rw's makefile has a few dependency recipes added at the end of it).

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

There are 2 answers

0
VonC On

Considering even git update-index --skip-worktree wouldn't prevent git pull from updating that one file, you are left with using a workaround like:

  • making an alias 'gpu' calling a script
  • making a script which will save that one file elsewhere, do the git pull, overwrite that one file with the saved one (that way, no conflict to resolve from a stash pop)
0
Endre Simo On

You can stash the current working tree then make a pull, this way will prevent git to throw an error and abort the process. After the pull you can restore the stashed files with:

git stash pop stash@{<revision>}

Or if this solution needs some extra steps which you want to prevent you can ignore the files which causing troubles by overriding with the files already on git repository:

git checkout HEAD^ file/to/overwrite
git pull

Or you can try to pull with -f command:

git pull -f