Just a little cheatsheet… ;)
Start ssh-agent:
eval $( ssh-agent ) ssh-add /home/user/.ssh/id_ed25519_git ssh -T [email protected]
Now you should be able to “git push”
New repository, using SSH:
git push origin master git remote set-url origin [email protected]:username/repo.git git remote add origin [email protected]:username/repo.git git add . git commit -m "First commit"
To change commit comment:
git commit --amend
Branches:
Clone the repository:
git clone
List all branches:
git branch -a
Checkout the branch that you want:
git checkout my-patch
Adding branches:
git branch git checkout -b branchname git push origin branchname git remote add branchname [email protected]:username/repo.git git commit . git push branchname branchname
Switch between branches:
git checkout master
git checkout –
Remove remote (no really harmful):
git remote remove
More details about branches:
Update your branch when the original branch from official repository has been updated :
$ git fetch [name_of_your_remote]
Then you need to apply to merge changes, if your branch is derivated from develop you need to do :
$ git merge [name_of_your_remote]/develop
Delete a branch on your local filesystem :
$ git branch -d [name_of_your_new_branch]
To force the deletion of local branch on your filesystem :
$ git branch -D [name_of_your_new_branch]
Delete the branch on github :
$ git push origin :[name_of_your_new_branch]
Color:
git diff --color-words git log --color-words git show --color-words
Undo:
git checkout . # revert your changes git clean -fdxn # dry run git clean -xdf # delete untracked and ignored files (!!!)
SHA Hash:
git hash-object
(compare to:)
https://api.github.com/repos/user/repos/contents/file
https://api.github.com/repos/user/repos/bobs/hash
Removing sensitive data:
bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA
bfg --replace-text passwords.txt
OR
git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \ --prune-empty --tag-name-filter cat -- --all
(add to .gitignore)
git push origin --force --all git push origin --force --tags git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin git reflog expire --expire=now --all git gc --prune=now
Working state:
Use git stash when you want to record the current state of the working directory and the index, but want to go back to a clean working directory
git stash git stash list git stash show git stash show -p --color
(!) remove all states:
git stash clear
List remote:
git ls-remote $URL
Versioning:
short commit hash:
git rev-parse --short HEAD
git describe --tags --always --dirty=-dirty
Logs:
git log --graph --abbrev-commit --format=format:'%h - %s%d'
git log --oneline git log --pretty=oneline --abbrev-commit
git log --abbrev-commit git log -1 --abbrev-commit git log -1 --pretty=format:%h