Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

git removing a development branch from remote git server

Tags:

git

I created a branch, worked on it, merged it with the base branch and now want to delete it. The branch was created on the git remote server as well.

Now when I ran git branch -d branch, it removed it and I pushed it. But i still see the branch on the git remote server.

I saw a similar issue earlier when I created this branch and I was not able to see it on the remote git server.

I am even able to checkout from this branch.

Am I missing anything here?

like image 230
SeattleOrBayArea Avatar asked Jan 27 '12 22:01

SeattleOrBayArea


1 Answers

To expand on these answers, each branch basically exists in three places:

  • On the remote server, e.g. origin/foo
  • Your local copy of origin/foo (which is updated via git fetch)
  • The local branch foo (which is updated via git merge origin/foo following git fetch - or more commonly, both are done together via git pull).

git branch -d deletes the last of these three, namely the local branch. git branch -d -r will remove your copy of the remote branch (or you can run git remote prune origin after deleting local branches).

To delete the branch on the remote server though, you must use git push. The old syntax for this is git push origin :branchname. This is because the syntax is localref:remoteref, for example it is possible to push a local branch on your machine to a remote branch with a different name, e.g. git push origin localbranch:remotebranch. If you leave the localbranch part empty, you're telling git to push nothing to the remote branch, deleting it.

If that's confusing, don't worry, the git developers agree with you. Newer versions have a --delete option so git push origin --delete branchname does the same thing as git push origin :branchname, but its intent is much more clear.

like image 52
rjh Avatar answered Nov 05 '22 19:11

rjh