27 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: How to Squash Multiple Commits into One with Git
 | |
| ---
 | |
| This is an awesome feature of `rebase` that can be used in the `interactive` mode. To squash the last _n_ commits into one, run the following command:
 | |
| 
 | |
|     git rebase -i HEAD~n
 | |
| 
 | |
| That will open up a text-editor with something similar to the following:
 | |
| 
 | |
|     pick commit_1
 | |
|     pick commit_2
 | |
|     pick commit_3
 | |
|     ...
 | |
|     pick commit_n
 | |
|     # Bunch of comments
 | |
| 
 | |
| Leave the first commit alone, and change the rest of the `pick`s to `squash`. Save and exit the editor.
 | |
| 
 | |
| So if you wanted to squash the last three commits, you'll first run `git rebase -i HEAD~3` and then you'll want to edit your commits to look something like this:
 | |
| 
 | |
|     pick dd661ba Commit 1
 | |
|     squash 71f5fee Commit 2
 | |
|     squash f4b4bf1 Commit 3
 | |
| 
 | |
| If you've already pushed to a remote before squashing your commits, you'll have to push to the remote again, with the `-f` flag, otherwise git will throw an error at you.
 | |
| 
 | |
| It is strongly suggested that you read the information in the opened file as there are many things you can do. |