Update a local branch with the changes from a tracked remote branch

GitBranchGit BranchRemote Branch

Git Problem Overview


I have a local branch named 'my_local_branch', which tracks a remote branch origin/my_remote_branch.

Now, the remote branch has been updated, and I am on the 'my_local_branch' and want to pull in those changes. Should I just do:

git pull origin my_remote_branch:my_local_branch

Is this the correct way?

Git Solutions


Solution 1 - Git

You don't use the : syntax - pull always modifies the currently checked-out branch. Thus:

git pull origin my_remote_branch

while you have my_local_branch checked out will do what you want.

Since you already have the tracking branch set, you don't even need to specify - you could just do...

git pull

while you have my_local_branch checked out, and it will update from the tracked branch.

Solution 2 - Git

You have set the upstream of that branch

(see:

git branch -f --track my_local_branch origin/my_remote_branch

OR (if my_local_branch is currently checked out):

$ git branch --set-upstream-to my_local_branch origin/my_remote_branch

(git branch -f --track won't work if the branch is checked out: use the second command git branch --set-upstream-to instead, or you would get "fatal: Cannot force update the current branch.")

That means your branch is already configured with:

branch.my_local_branch.remote origin
branch.my_local_branch.merge my_remote_branch

Git already has all the necessary information.
In that case:

# if you weren't already on my_local_branch branch:
git checkout my_local_branch 
# then:
git pull

is enough.


If you hadn't establish that upstream branch relationship when it came to push your 'my_local_branch', then a simple git push -u origin my_local_branch:my_remote_branch would have been enough to push and set the upstream branch.
After that, for the subsequent pulls/pushes, git pull or git push would, again, have been enough.

Solution 3 - Git

for somebody accidently mess the local commits.

delete local dirty branch

git branch -D master

then rebuild a branch from remote

git checkout -b master origin/master

Solution 4 - Git

Note: I am a git novice.

When I do a "git pull", I usually see "error: Your local changes to the following files would be overwritten by merge:" "Please commit your changes or stash them before merge." (Because I've made minor temp changes that I don't really care about.)

I typically don't care about my changes if I am pulling from remote. I just want the latest that the team has pushed. (I have used "stash" on occasion to keep some changes.)

So, what I do to pull the latest from remote and wipe out any of my local changes:

git reset --hard (for current branch)

or

git reset --hard origin/master (for going back to master)

then:

git pull (pulls the current remote files to my local)

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
QuestionskyorkView Question on Stackoverflow
Solution 1 - GitAmberView Answer on Stackoverflow
Solution 2 - GitVonCView Answer on Stackoverflow
Solution 3 - Githx_hxlView Answer on Stackoverflow
Solution 4 - GitHJunkView Answer on Stackoverflow