Reputation: 102426
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
Upvotes: 8
Views: 15363
Reputation: 11541
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
Upvotes: 6
Reputation: 1329092
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:
gpu
' calling a scriptstash pop
)Upvotes: 1