For good or bad, my current Git workflow does not include merges, but rebasing.
It keeps the history cleaner, works with the established workflow (pretty standard GitHub flow) just no merge commits. I was trying to find a nice graph of the master branch, but coming from a GitLab background it isn’t hard to find this information in the GitLab repo, but I don’t think GitHub really has this history feature. Anyone know the best way figuring out the history on GitHub?
We really enforce making sure to have meaningful commits, and commit messages. When you are working on your local branch, feel free to commit away, but an interactive rebase is needed before requesting your pull request. After you have done a couple of these rebases, there really isn’t anything to be afraid of. I hadn’t done one, and let me tell you, my first pull request was pretty painful. I think getting through the review process on that, and getting my commit history clean took just as long as coding my feature >_<. Now me, rebases, and amends are friends. I haven’t had a chance to use fixup commits yet, but they are something on my raider to try out soon!
I enjoy using Git bash for my source repository needs. Even with my more advanced workflow at my company, for me it has the most flexibility. I have given Sourcetree (works better with BitBucket then GitHub) and Git Kracken a try before, and it is nice to have visuals when you need to deal with complex conflict situations, but I keep on going back to my trusty Git Bash. I never used to be a command line person, just in certain situations, but now especially since I have switched over to Ruby and Rails I have at least 3-4 terminals open at anyone time. I even exited Vim yesterday without having to look it up! I feel that should be some sort of milestone.
Also I have been making use of GIT CLI alias, also installed multiple scripts to run in the terminal (terminal parrot I’m looking at you!). Some of these help me with my job more then others :). If you don’t have a git alias, get yourself one stat. You just need to add lines to ~/.gitconfig
[alias]
st = status
ci = commit -v
Some of my personal favorites right now are:
st = status
co = checkout
dm = diff –patience master
prb = pull –rebase
pu = pull –rebase origin master
pf = push –force-with-lease
po = push origin master
What’s in your Git alias? And also how awesome is Command+Option+Shift+V on MacOS? That was the key to my problem with copy and pasting text and not keeping the old formatting!


Oldest comments (24)
Thanks for the post Christine. We rebase where I work as well. Here's my aliases, gitaliases.iamdeveloper.com.
Ooh nice, I think I will add a couple of these onto my file too!
I like prettying up the log to make it a bit more palatable, here's an example (not mine).
Here is ...everyone else aliases, that uses bash-it I mean.
I'm tired to say what is wrong in having custom personal aliases and shortcuts, instead I just give this link :))
Congrats for the great post Christine!! I loved it
I use the alias from git plugin (oh my zsh)
gst for git status for example
It's pretty cool
I did not know about ‘git diff --patience’ until today. Thanks Christine!
I have a few aliases that I find useful.
And why not just shell aliases instead? Unless you're switching between shells, I don't see the point of using
git strather thangsorgst...I use
oh my zshand git aliases that comes along. But at times type in the whole command atleast once in a week so I don't forget them.Nice. Hey, give —fixup commits a shot. after while commit messages are like “fixup: fixup: fixup: feature” , but after interactive rebase it is all nice.
Ad aliases: i am not friend of them, i try to use as little as posible of them, because when ine use aliases, it make him forgot command it stands for.
i only use my “git tree” to pretty oneline log and some forcepushes to specified branches
edit: here are my only aliases:
if i should have onyl one, it is tree
I agree, we'll get used to our own environment and then when we use someone else's we forget what the commands stand for.
The ones you listed seem to be the 'basic' aliases you should have to make your work easier.
Yes! :) exactly...
you are on another computer (your prod server) and you need to do something in git. if you use all heavy aliases, then you just can't do anything, because in fact, you do not know how to git :D :)
yes, listed ones are absolutelly basic for me
heres mine
gitlab.com/ramlevdk/zsh-plugins/bl...
and
gitlab.com/ramlevdk/dotfiles/blob/...
My new favorite alias is fixup --amend. Lets you amend to a specific commit, not need to be the latest one.
Found this gem at GIT FIXUP: --AMEND FOR OLDER COMMITS
Thanks for sharing, this is definitely something I will be checking out.