
Lots of us use git in a daily basis, myself included. We can say a lot of git, but I would not say that it is intuitive, or that it has nice shortcuts. Similar to what happens with VIM, over the course of some years and some jobs I collected a small list of git configurations that I find very comfortable to work with.
Damn! I failed again, no posts on summer 😀
Graphical git or command line git?
There’s a lot of nice graphical GUI for git. But this post is entirely related to command line git.
.gitconfig and aliases
Lots of people have opened the .gitconfig file, or have edited it indirectly. And it probably looks like this:
[user] name = kxtells email = my.email@gmail.com
But in this file, you can define aliases. An alias is nothing special, when given a command input git will try to expand it from its aliases file. For example, if we define the alias:
bar = commit
when writing git bar in the command line, git will expand it to git commit.
Basic pleasentries
Here your basic friends. Writing commit is too cumbersome? simply write ci
ci = commit
co = checkout
br = branch
fp = format-patch
Pushing
This one is quite simple, but I was so tired of writing the full command. It’s very common to work on a branch and want to upload that branch to the remote origin. pcb (push current branch) has a nice ring to it.
pcb = git push origin HEAD
push-current-branch = git push origin HEAD
Logging
And here, the bane of our existance. The default log printing isn’t very sexy. It might be useful for quick views, but following a long log is not pleasant. Find here three nice logging options:
lgLog with one line and colors (for the current branch)lggSame as the previous one. But it also prints the branches found along the log.lgbMy precious. Print the full log (all branches)
lg = log --format=format:'%C(bold blue)%h%C(reset) %C(bold green)%an%C(reset) %s'
lgg = log --format=format:'%C(bold blue)%h%C(reset) %C(bold yellow)%d%C(reset) %C(bold green)%an%C(reset) %s'
lgb = log --graph --all --format=format:'%C(bold blue)%h%C(reset) %C(bold yellow)%d%C(reset) - %C(bold green)%ar%C(reset) %C(white)%s%C(reset) %C(bold white) -- %an%C(reset) ' --abbrev-commit --date=relative
Then we have file logging, print the changes made to a file:
fl = log -u
Resetting changes
Not so common in my normal flow (since I check and re-check before changes are made), but useful nonetheless
r1 = reset HEAD^
r2 = reset HEAD^^
r1h = reset HEAD^ --hard
r2h = reset HEAD^^ --hard
Git SVN check commit list
When working with git-svn theres the dreaded moment of committing to SVN. I use this alias to know what will be committed before proceeding:
lgc = log --name-status git-svn..HEAD
The full list
ci = commit
co = checkout
br = branch
fp = format-patch
pcb = git push origin HEAD
push-current-branch = git push origin HEAD
lg = log --format=format:'%C(bold blue)%h%C(reset) %C(bold green)%an%C(reset) %s'
lgg = log --format=format:'%C(bold blue)%h%C(reset) %C(bold yellow)%d%C(reset) %C(bold green)%an%C(reset) %s'
lgb = log --graph --all --format=format:'%C(bold blue)%h%C(reset) %C(bold yellow)%d%C(reset) - %C(bold green)%ar%C(reset) %C(white)%s%C(reset) %C(bold white) -- %an%C(reset) ' --abbrev-commit --date=relative
fl = log -u
r1 = reset HEAD^
r2 = reset HEAD^^
r1h = reset HEAD^ --hard
r2h = reset HEAD^^ --hard
lgc = log --name-status git-svn..HEAD
That’s all folks
Well. That’s it. A subset of my .gitconfig that might be useful in most cases, not too specific and not too complicated. 😀
Pingback: The dropped posts, and 2017 closing | Castells