This is a quick and dirty git cheat sheet of all the commands I frequently forget how to do with Git:
- See which remote is configured
- Stop tracking file permissions
- Debug Authentication Issues
- Find Unmerged Branches
- Export GitLog as a file
- Change commit message
- Empty commit message
Commit nothing
Sometimes you need to just commit something to trigger some CI/CD process. This is how you do that:
git commit --allow-empty -m "Trigger notification"
See the remote
I frequently mislabel project folders on my local and easily lose-track of the remote each directory points to. The solution, this short git config command that shows me the remote URL:
git config --get remote.origin.url
Another way you can do this is open the git config file in a text editor like Nano or VIM. The config file can be found within the .git
directory at the root of your project:
nano .git/config
The output of which would look something like this (example taken from the Hugo static site generator documentation repository):
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/gohugoio/hugoDocs.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Stop git tracking file permissions (chmod)
Occasionally repositories bring with them their permissions that need to be updated on the remote. A nightmare when working with deploy keys as they're one way. So set the following config rule to false to stop git from tracking file permissions / chmod changes.
git config core.fileMode false
Debug ssh/git authentication
The following command runs an ssh test connection with the -T
flag that tests an SSH connection to a remote. In this case, it tests the current account has the correct credentials to access BitBucket.
ssh -T git@bitbucket.org
Find branches that have/not been merged yet
Useful when removing "checked out" branches from your machine. The last argument is the branch you want to check against, in our example here it is develop.
git branch --no-merged develop
Export the log as a file
Useful if you want to export a list of commits into a spreadsheet and do some analysis but personally only ever used this once.
# Local Dates:
git log --date=local > commits.txt
Changing the output
You can expand this export feature by using the --pretty=format
argument:
# ISO Dates:
git log --date=iso --pretty=format:"%h%x09%an%x09%ad%x09%s" > commits.iso.tsv.txt
Make a spreadsheet
Nothing too special here just exports the data fields in a TSV format so you can open them in the spreadsheet software of your choice.
git log --date=iso --pretty=format:'"%h","%an","%ad","%s"' > commits.excel.tsv.txt
# Another date form
git log --pretty=format:%h,%an,%ad,%s > commits.txt
Change the default editor
git config --global core.editor "nano"
Change last commit message*
*On the last non-pushed commit.
This will directly edit the message.
git commit --amend -m "New commit message"
Shortening this to the following opens the whole commit into an editor for updating.
git commit --amend