Add git-delta
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
---
|
||||
Title: Some git tricks
|
||||
Date: 2019-04-22 17:00
|
||||
Modified: 2019-04-24 20:08+05:30
|
||||
Modified: 2023-05-14 20:00+2:00
|
||||
Author: Fabrice
|
||||
Category: cheat sheets
|
||||
Tags: git, termtosvg
|
||||
@ -11,10 +11,13 @@ 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…
|
||||
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]({filename}/software/pass.md), therefore most of those commands are here to fix my own mistakes.
|
||||
**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]({filename}/software/pass.md),
|
||||
therefore most of those commands are here to fix my own mistakes.
|
||||
|
||||
Reset `master` to `origin/master`:
|
||||
```sh
|
||||
@ -26,13 +29,17 @@ Jump back and forth from a commit to another (same behaviour as :
|
||||
git checkout -
|
||||
```
|
||||
|
||||
Find back lost commits, especially useful when you are doing dirty things and want to `cherry-pick` an orphan commit (for instance):
|
||||
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.
|
||||
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.
|
||||
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
|
||||
```
|
||||
@ -42,13 +49,15 @@ To add changes in an atomic fashion on a file (in an interactive way):
|
||||
git add -p <file>
|
||||
```
|
||||
|
||||
**Unsafe:** to remove a file from the past (for instance when you commit some *sensitive* file):
|
||||
**Unsafe:** to remove a file from the past (for instance when you commit some
|
||||
*sensitive* file):
|
||||
```sh
|
||||
git filter-branch --prune-empty --tree-filter "rm -f '<file name>'" HEAD
|
||||
git push --force
|
||||
```
|
||||
|
||||
Another useful trick is `git commit -v`, it allows reviewing your changes before committing.
|
||||
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>
|
||||
|
||||
@ -57,5 +66,25 @@ A ncurse-based interface for git: [tig](https://jonas.github.io/tig/)
|
||||
tig
|
||||
```
|
||||
|
||||
<!-- vim: spl=en
|
||||
-->
|
||||
To make `diff`s more readable, I highly recommend to use delta as a diff filter:
|
||||
<https://github.com/dandavison/delta>.
|
||||
It makes the display of `git diff` close to what you can get in a browser
|
||||
repository, highlighting the places where diffs actually happen and is highly
|
||||
reconfigurable.
|
||||
|
||||
Once it is installed in your package manager, you can for instance configure it
|
||||
as follows (mostly the same as in the GitHub page):
|
||||
```gitconfig
|
||||
[core]
|
||||
pager = delta
|
||||
[interactive]
|
||||
diffFilter = delta --color-only
|
||||
[delta]
|
||||
navigate = true # use n and N to move between diff sections
|
||||
light = true # set to true if you're in a terminal w/ a light background
|
||||
theme=Monokai Extended Light
|
||||
[merge]
|
||||
conflictstyle = diff3
|
||||
[diff]
|
||||
colorMoved = default
|
||||
```
|
||||
|
Reference in New Issue
Block a user