56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| Title: Some git tricks
 | |
| Date: 2019-04-22 17:00
 | |
| Modified: 2019-04-24 14:27+05:30
 | |
| Author: Fabrice
 | |
| Category: cheat sheets
 | |
| Tags: git, termtosvg
 | |
| Slug: git-tricks
 | |
| Header_Cover: images/covers/water.jpg
 | |
| Summary: A compilation of some `git` tricks I keep forgetting.
 | |
| Lang: en
 | |
| ---
 | |
| 
 | |
| Some [git](https://git-scm.com/) tricks I use from time to time and that I forgot everytime…
 | |
| 
 | |
| **Disclaimer:** I'm not the perfect git user, and my way of using it is especially crude.
 | |
| Recently, most of my git commits are due to [pass](/password-store.html), therefore most of those commands are here to fix my own mistakes.
 | |
| 
 | |
| Reset `master` to `origin/master`:
 | |
| ```sh
 | |
| git checkout origin/master -B master
 | |
| ```
 | |
| 
 | |
| Jump back and forth from a commit to another (same behaviour as :
 | |
| ```sh
 | |
| git checkout -
 | |
| ```
 | |
| 
 | |
| Find back lost commits, especially useful when you are doing dirty things and want to `cherry-pick` an orphan commit (for instance):
 | |
| ```sh
 | |
| git log --graph --reflog
 | |
| ```
 | |
| Some explanations: `--graph` show the commit tree, which is useful to notice the orphan leafs, and `--reflog` shows the world all the dirtiness you've done.
 | |
| 
 | |
| If you noticed that your folder grows, you can manually cast the garbage collector on it. It should do it automatically, but not often enough according to my standards.
 | |
| ```sh
 | |
| git gc --aggressive
 | |
| ```
 | |
| 
 | |
| To add changes in an atomic fashion on a file (in an interactive way):
 | |
| ```sh
 | |
| git add -p <file>
 | |
| ```
 | |
| 
 | |
| Another useful trick is `git commit -v`, it allows reviewing your changes before committing.
 | |
| 
 | |
| <object data="/examples/git-cv.svg" width="100%">Use of git commit -v</object>
 | |
| 
 | |
| A ncurse-based interface for git: [tig](https://jonas.github.io/tig/)
 | |
| ```sh
 | |
| tig
 | |
| ```
 | |
| 
 | |
| <!-- vim: spl=en
 | |
| -->
 |