Skip to content

Instantly share code, notes, and snippets.

@intelguasoft
Created April 24, 2020 00:29
Show Gist options
  • Save intelguasoft/b5cc7f2dbdd5c1d9d127dbc6ee997952 to your computer and use it in GitHub Desktop.
Save intelguasoft/b5cc7f2dbdd5c1d9d127dbc6ee997952 to your computer and use it in GitHub Desktop.
How do I force “git pull” to overwrite local files?

Important: If you have any local changes, they will be lost. With or without --hard option, any local commits that haven't been pushed will be lost.[*] If you have any files that are not tracked by Git (e.g. uploaded user content), these files will not be affected.

I think this is the right way:

git fetch --all Then, you have two options:

git reset --hard origin/master OR If you are on some other branch:

git reset --hard origin/<branch_name> Explanation: git fetch downloads the latest from remote without trying to merge or rebase anything.

Then the git reset resets the master branch to what you just fetched. The --hard option changes all the files in your working tree to match the files in origin/master

Maintain current local commits [*]: It's worth noting that it is possible to maintain current local commits by creating a branch from master before resetting:

git checkout master git branch new-branch-to-save-current-commits git fetch --all git reset --hard origin/master After this, all of the old commits will be kept in new-branch-to-save-current-commits.

Uncommitted changes Uncommitted changes, however (even staged), will be lost. Make sure to stash and commit anything you need. For that you can run the following:

git stash And then to reapply these uncommitted changes:

git stash pop

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment