How to get a fresh copy of a branch from the remote repository?

Git

Git Problem Overview


My friend's local master branch is apparently a disaster (through accidental merges and commits, I guess). However, his dev branches are fine but contain changes he's not ready to push to remote.

What's the best way of overriding his local master branch with the remote master branch and get a fresh copy (without overriding his other branches)?

Git Solutions


Solution 1 - Git

As Jefromi commented,

git checkout master
git reset --hard origin/master

does the right thing: setting the master to its origin state. (If you are already on the master branch, you can omit the first command.) It also leaves the branch's reflog intact.


Old inferior answer:

git checkout dev
git branch -D master
git checkout master

This switches to another branch ("dev" in this case – choose any other branch you might have), deletes the local master branch, and then recreates it from remotes/origin/master (which might not work depending on your settings and Git version). The last command is often equivalent to

git checkout -b master remotes/origin/master

Compared to the new answer above this has the disadvantage that the reflog is destroyed and recreated (i.e. you can't as easy undo this if needed), and it is less clear what happens here. Also, you need to have another branch existing to which you can switch during deletion and recreation (but that was the case in the original question).

Solution 2 - Git

Paŭlo Ebermann's answer is correct:

git checkout master
git reset --hard origin/master

And add that if you also wish to remove untracked files and ignored files:

git clean -xfn # dry run with -n

Source with further details: https://stackoverflow.com/questions/61212/how-do-i-remove-local-untracked-files-from-my-current-git-branch

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBrianView Question on Stackoverflow
Solution 1 - GitPaŭlo EbermannView Answer on Stackoverflow
Solution 2 - GitTravis DView Answer on Stackoverflow