Git
auto setup branch on origin when pushing
git config push.autoSetupRemote true
"forking" to local
https://www.baeldung.com/ops/git-clone-remote-branches
git clone --mirror https://github.com/exampleuser/exampleproject.git cd exampleproject.git git config --bool core.bare false (I had to do this before the next step:) cd .. mk exampleproject mv exampleproject.git exampleproject cd exampleproject mv exampleproject.git .git git reset --hard
hard kill/delete/remove of all not tracked/untracked files, reset project
#show what will be deleted git clean -dx -n #DELETE, CAREFUL #reminder to backup application.yml, run configurations, notes, etc. git clean -dx -f
alias gl='git pull' alias gco='git checkout' alias gcb='git checkout -b' alias ga='git add' alias gaa='git add -A' alias gr='git reset' alias gcm='git commit -m' alias gcma='git commit --all -m' alias gca='git commit --amend --no-edit' alias gcam='git commit --amend -m ' alias gcaa='git commit --all --amend --no-edit' alias gcaam='git commit --all --amend --no-edit -m' alias gp='git push' alias gpf='git push --force-with-lease --force-if-includes' alias gst='git status' alias gd='git diff' alias gm='git merge' alias grb='git rebase' alias gsh='git stash' # not great, but conflicts with git status alias glg='git log' alias glo='git log --oneline'
remove all local branches which have been merged, excluding master/main/dev
alias git-delete-merged='git branch --merged | egrep -v "(^*|master|main|dev)" | xargs git branch -d'
Local branch management
update master from any branch
git push . origin/master:master
reset local branch to origin state
git fetch origin git reset --hard origin/master
rename LOCAL branch
git branch -m
to push to origin, push new branch and delete old one
git push origin -u
stash
stash only staged files
git stash push -S
stashing specific files
#only works for tracked files. Workaround -> add file, then stash git stash -- file1.txt file2.txt #I think always works? git stash push file1.txt file2.txt
staging
only add parts of a change
git add -A --patch
git add --patch
changing history
remove not-the-last commits
git reset -i HEAD~10
where 10 is the number commits to look back
changing commits ### https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
remove/change previous commit
git reset --soft head~
To split a previous commit into multiple commits:
git rebase -i #in the editor, at the commit you want to split up, change pick to edit git reset HEAD^ #now add changes and commit as desired
To add changes to a last commit, super easy:
git add
And to change the commit message
git commit --amend -m "new message"
hard reset one file
git checkout HEAD
diff
see staged changes
git diff --cached
see changes in a commit:
git diff COMMIT~ COMMIT
or maybe
git show COMMIT
history
find file that was deleted at some point in the git history
git checkout master (or latest)
concise form, to see full history of file remove the "-1"
git log --full-history -1 --
misc
wildcard use
git add/reset/checkout 'search' git add folder git add folder/*
find remote url
git remote -v