63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Delete a Git Branch Both Locally and Remotely
 | |
| ---
 | |
| // locally ((if you know what you are doing!)
 | |
|     git branch -d localBranchName
 | |
| 
 | |
|     // and then if you need to...
 | |
|     // on remote
 | |
|     git push origin :remoteBranchName
 | |
| 
 | |
| ## When to Delete branches?
 | |
| 
 | |
| Normally in a contribution flow `Branches` are a great way to work on different features, fixes, etc. while isolating them from the main codebase. So a repo may have a `master` branch, and separate branches to work on different features.
 | |
| 
 | |
| Typically once the work is completed on a feature and it is recommended to delete the branch.
 | |
| 
 | |
| ## The Delete workflow:
 | |
| 
 | |
| Lets say you have a repo called as `AwesomeRepo`, and its hosted on Github, at a location such as `https://github.com/my_username/AwesomeRepo`.
 | |
| 
 | |
| Also lets assume it has the branches like:  
 | |
| `master`  
 | |
| `feature/some-cool-new-stuff`  
 | |
| `fix/authentication`  
 | |
| `staging`
 | |
| 
 | |
| For consistency we will assume branch names are same on `local` as well as on the `remote`.
 | |
| 
 | |
| Now, lets say you are done with that fix for authentication and want to remove the branch `fix/authentication`.
 | |
| 
 | |
| ## Deleting the branch REMOTELY:
 | |
| 
 | |
| Simply do:
 | |
| 
 | |
| `git push --delete <remote> <branch>`.
 | |
| 
 | |
| For example: `git branch --delete origin fix/authentication`
 | |
| 
 | |
| If you get the error
 | |
| 
 | |
|     error: unable to push to unqualified destination: remoteBranchName The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to 'git@repository_name'
 | |
| 
 | |
| Perhaps someone else has already deleted the branch. Try to synchronize your branch list using
 | |
| 
 | |
|     git fetch -p
 | |
| 
 | |
| The git manual says -p, --prune After fetching, remove any remote-tracking branches which no longer exist on the remote.
 | |
| 
 | |
| ## Deleting the branch LOCALLY:
 | |
| 
 | |
| First checkout to a branch other that the one you want to delete:
 | |
| 
 | |
| `git checkout <branch>`.
 | |
| 
 | |
| For example: `git checkout master`
 | |
| 
 | |
| Git will not let you delete the branch you are currently on.
 | |
| 
 | |
| Then proceed with deleting:
 | |
| 
 | |
| `git branch -D <branch>`.
 | |
| 
 | |
| For example: `git branch -D fix/authentication` |