gists/git.md

45 lines
1.3 KiB
Markdown

# Git
### Pronouns
- us: changes on the branch I am rebasing onto (eg. the master), usually "the good official one"
- they: changes of the branch I am rebasing (eg. feature branch)
### Search keyword
```git log -S <keyword>```
### Fetch and remove deleted branches
```git fetch --prune```
### Worktree
```
git worktree add <path> <branch>
git worktree remove [--force] <path>
```
Use force if you have initialized submodules in the worktree.
### Rebase multiple divergent branches
```git rebase --interactive --onto <newparent> <oldparent>```
### What commit added a certain file?
```git log --diff-filter=A -- path/file```
### Changes of a certain file
```git diff <branch> -- path/file```
### Git pull strategy
```
hint: Pulling without specifying how to reconcile divergent branches is
hint: discouraged. You can squelch this message by running one of the following
hint: commands sometime before your next pull:
hint:
hint: git config pull.rebase false # merge (the default strategy)
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
```