Git cheat sheet
Table of Contents
Nice history log in console
----------------------------------------
.. code-block::
git log --all --decorate --oneline --graph
How to remember:
"A Dog" = git log --**all** --**decorate** --**oneline** --**graph**
Sample result:
.. code-block::
$ git log --all --decorate --oneline --graph
* e4689e3 (HEAD -> master, origin/master, origin/HEAD) tree iteration
* 4c3385d using stoi
* 0588a47 gitignore for cpp
* 8f3f0e6 removed boost, add readme
* f225b06 simple expression interpreter
* 1ccdda1 chain of responsibility
* f37eb7a restructure of the old code, removed large db file
| * 3bfdf78 (tag: 0.1, origin/old-training-task-with-data, old-training-task-with-data) fixed readme for task2
| * c0c934f more readme's
| * c514699 better readme
| * 3e092be added readme, added basic error processing, added logging
| * 786fa09 cleaning up
| * 96fd9a7 main script for task1
| * b1b0e53 first version of task1
| * 8cf1529 safety check for download, refactoring
| * 807cecd draft for task1
| * 68fcdf8 updated readme for task2
| * 7e8b8ae added readme,
|/
* d5bd5a4 structure of the directory
* d293704 added more tests
* aefe72f added gitignore
* 06ff547 Initial version for task2
Set date/time for git commits
------------------------------------------------------
.. code-block::
export GIT_COMMITTER_DATE="2020-01-01 12:00:00"; git commit --date "$GIT_COMMITTER_DATE" -m "commit message"
Caching credentials
---------------------------------------------
Remember credentials for 1 hour (3600 seconds):
.. code-block::
git config --global credential.helper 'cache --timeout=3600'
Disabling cache:
.. code-block::
git config --global --unset credential.helper
Export a repo to an archive without .git
--------------------------------------------------
.. code-block::
git archive --prefix=ADDITIONAL_PREFIX_INSIDE_ARCHIVE YOUR_BRANCH -o OUTPUT_FILE.zip
`tar` archive is also supported. More info at `git-archive doc `_.
Use specific SSH key for connection
-----------------------------------------------------
One can set a custom ssh command using an environment variable:
.. code-block::
export GIT_SSH_COMMAND="ssh -i /path/to/your/private_key"
git fetch #..... do something
If you want to assign an SSH key permanently for a given repo you can update the local git config:
.. code-block::
git config core.sshCommand 'ssh -i path/to/your/private_key'
git fetch #..... do something