Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Force my local master to be origin/master

Tags:

git

branch

github

I've let master and origin/master get stuck in the sidelines, and am no longer interested in the changes on that branch.

I followed these instructions to get my local master pointing to the right place Make the current git branch a master branch

 git checkout better_branch
 git merge --strategy=ours master    # keep the content of this branch, but record a merge
 git checkout master
 git merge better_branch             # fast-forward master up to the merge

which worked fine except git status gives

C:\data\localprojects\Beko2011Azure [master]> git status

# On branch master
# Your branch and 'origin/master' have diverged,
# and have 395 and 2 different commits each, respectively.
#
nothing to commit, working directory clean

so how do I now persuade origin/master (github) to reflect my master. Anything orphaned on origin/master can be safely abandoned.

like image 771
Andiih Avatar asked Apr 19 '13 11:04

Andiih


People also ask

How do I pull origin master to my local branch?

git pull origin master will pull changes from the origin remote, master branch and merge them to the local checked-out branch. git pull origin/master will pull changes from the locally stored branch origin/master and merge that to the local checked-out branch.

How do I replace local master with remote master?

If you need to completely replace the history of your local master with your remote master (for example, if you've been playing with commits or rebase), you can do so by renaming your local master, and then creating a new master branch.

Is origin master local or remote?

I know, origin is a term for the remote repository and master is the branch there.


1 Answers

To have origin/master the same as master:

git push -f origin master:master 

Discussion on the parameters:

  • -f is the force flag. Normally, some checks are being applied before it's allowed to push to a branch. The -f flag turns off all checks.

  • origin is the name of the remote where to push (you could have several remotes in one repo)

  • master:master means: push my local branch master to the remote branch master. The general form is localbranch:remotebranch. Knowing this is especially handy when you want to delete a branch on the remote: in that case, you push an empty local branch to the remote, thus deleting it: git push origin :remote_branch_to_be_deleted

A more elaborate description of the parameters could be found with man git-push


Opposite direction: If you want to throw away all your changes on master and want to have it exactly the same as origin/master:

git checkout master git reset --hard origin/master 
like image 175
eckes Avatar answered Sep 23 '22 18:09

eckes