From 60f9e870747afb67526c226b872694913007b037 Mon Sep 17 00:00:00 2001 From: johannst Date: Thu, 10 Sep 2020 23:25:06 +0200 Subject: renamed misc -> tools --- src/tools/git.md | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 src/tools/git.md (limited to 'src/tools/git.md') diff --git a/src/tools/git.md b/src/tools/git.md new file mode 100644 index 0000000..a4af0cf --- /dev/null +++ b/src/tools/git.md @@ -0,0 +1,130 @@ +# git(1) + +## staging +```markdown + git add -p [] ............ partial staging (interactive) +``` + +## Remote +```markdown + git remote -v .................. list remotes verbose (with URLs) + git remote show [-n] .. list info for (like remote HEAD, + remote branches, tracking mapping) +``` + +## Branching +```markdown + git branch [-a] ................ list available branches; -a to include + remote branches + git branch -vv ................. list branch & annotate with head sha1 & + remote tracking branch + git branch ............. create branch with name + git checkout ........... switch to branch with name + git checkout --track .. start to locally track a remote branch + git push -u origin .... push branch to origin (or other remote), and + setup as tracking branch +``` + +## Resetting +```markdown + git reset [opt] + opt: + --mixed .................... resets index, but not working tree + --hard ..................... matches the working tree and index to that + of the tree being switched to any changes to + tracked files in the working tree since + are lost + git reset HEAD .......... remove file from staging + git reset --soft HEAD~1 ........ delete most recent commit but keep work + git reset --hard HEAD~1 ........ delete most recent commit and delete work +``` + +## Tags +```markdown + git tag -a -m "descr" ........ creates an annotated tag (full object + containing tagger, date, ...) + git tag -l ........................... list available tags + git checkout tag/ ............. checkout specific tag + git checkout tag/ -b .. checkout specific tag in a new branch +``` + +## Diff +```markdown + git diff HEAD: origin/HEAD: ... diff files for different refs + git diff -U$(wc -l ) ......... shows complete file with diffs + instead of usual diff snippets +``` + +## Log +```markdown + git log --oneline .... shows log in single line per commit -> alias for + '--pretty=oneline --abbrev-commit' + git log --graph ...... text based graph of commit history + git log --decorate ... decorate log with REFs +``` + +## File history +```markdown + git log -p ......... show commit history + diffs for + git log --oneline .. show commit history for in compact format +``` + +## Patching +```markdown + git format-patch / + opt: + -N ................... use [PATCH] instead [PATCH n/m] in subject when + generating patch description (for patches spanning + multiple commits) + --start-number ... start output file generation with as start + number instead '1' + since spcifier: + -3 .................. e.g: create a patch from last three commits + ....... create patch with commits starting after + + git am ......... apply patch and create a commit for it + + git apply --stat ... see which files the patch would change + git apply --check .. see if the patch can be applied cleanly + git apply .......... apply the patch locally without creating a commit + + # eg: generate patches for each commit from initial commit on + git format-patch -N $(git rev-list --max-parents=0 HEAD) + + # generate single patch file from a certain commit/ref + git format-patch --stdout > my-patch.patch +``` + +## Submodules +```markdown + git submodule add [] .......... add new submodule to current project + git clone --recursive ............... clone project and recursively all + submodules (same as using + 'git submodule update --init + --recursive' after clone) + git submodule update --init --recursive ... checkout submodules recursively + using the commit listed in the + super-project (in detached HEAD) + git submodule update --remote .... fetch & merge remote changes for + , this will pull + origin/HEAD or a branch specified + for the submodule + git diff --submodule ...................... show commits that are part of the + submodule diff +``` + +## Inspection +```markdown + git ls-tree [-r] .... show git tree for , -r to recursively ls sub-trees + git show ............ show + git cat-file -p ..... print content of +``` + +## Revision Specifier +```markdown + HEAD ........ last commit + HEAD~1 ...... last commit-1 + HEAD~N ...... last commit-N (linear backwards when in tree structure, check + difference between HEAD^ and HEAD~) + git rev-list --max-parents=0 HEAD ........... first commit +``` -- cgit v1.2.3