Hi guys!
We all use Git every day typing commands such as git push origin master
many times a day. But maybe you have aliases contracting to git p
. Gradually, it becomes more irritating.
For example I use the git push origin {branch}
command about 20 times a day. git commit -m "{message}"
maybe 15.
I don't like the built-in Git tools into IDE's and don't use them at all.
So I've decided to automate some of my work.
I wrote a script that helps me every day and, I hope, will help you.
Called casual-git.
How it looks
myproject master β gh
d - push
f - push --force
p - pull
o - pull --force
c - commit
a - commit --amend
s - commit --smart
l - log --pretty
h - checkout --smart
Almost each of the commands I use every day.
It's really easy to use!
It is especially helpful if you name your branches with long names like feature/EGNYTE-20-watermarks-over-documents
:
d - push
f - push --force
p - pull
o - pull --force
c - commit
a - commit --amend
s - commit --smart
l - log --pretty
h - checkout --smart
Enter a branch name or a part of name: ma
More than one git branch were found.
10 first branches are shown.
Please choose a desired branch.
[0] feature/EGNYTE-20-watermarks-over-documents
[1] master
[2] masterfix/EGNYTE-21-big-files-merge
[3] masterfix/EGNYTE-26
[4] masterfix/EGNYTE-29-big-files-merge
[5] masterfix/EGNYTE-33
[6] masterfix/EGNYTE-41
Switched to branch 'feature/EGNYTE-20-watermarks-over-documents'
Or paths to the files are too long and you need to commit only few of them:
myproject feature/EGNYTE-68-progress-bar-for-watermarking β gh
d - push
f - push --force
p - pull
o - pull --force
c - commit
a - commit --amend
s - commit --smart
l - log --pretty
h - checkout --smart
Delete files from the next commit:
No staged files
Add files to the next commit:
[1] modified: app/Http/Controllers/WatermarkController.php
[2] modified: app/Jobs/Egnyte/PublishWatermark/Job.php
[3] modified: app/Services/QueuedMessage/Queue.php
[4] modified: public/css/watermark.css
[5] modified: public/js/watermark.js
[6] modified: public/mix-manifest.json
[7] modified: resources/assets/js/watermark.js
[8] modified: resources/assets/scss/watermark.scss
[9] modified: resources/lang/en/watermark.php
[10] modified: resources/views/watermark/index.blade.php
[11] modified: webpack.mix.js
Enter file numbers separating by spaces: 1 2 3
I hope this helps someone!
Top comments (22)
You are using the force flag everyday, OMG I hope we will not be co-workers ...anytime π
I use the rebase feature every day many times because do not like mess in my git repositories. Of course when I work with other people i don't use the force flag.
It depends on the circumstances. If he is developing a branch alone and needs to correct his PR and push again for review, what would you do?
If you want to remove the history you don't have much of a choice, it was a joke.
I would use
git merge squash
and instead of --force flag I would use--force-with-lease
to avoid possible data loss.I applaud this. I think it's great when developers leverage each other's existing tools to simplify common tasks. To me it seems like this tool abstracts the complexities of git commands, why not just use a tool like SourceTree or GitKraken? They are visual tools that do a lot of heavy lifting for you and have imo made my life so much easier. BTW I don't work for either of those nor do I get any kind of compensation from them, but I think they are worthwhile tools if the goal is to make life easier
I agree with you about the tools but i use vim a lot and prefer using command line. That's people choice what to use :)
Nice!
Careful with that force flag, though! (I use the that flag less than once a month, but reading your other comments, I also barely ever rebase).
Note that when I use
git commit --amend
, I use-CHEAD
about 90% of the time.What are the
--smart
flags? Is that a new feature? I'm on git 2.15.1 and don't see it in the man page, or when I try using them just to see if they work.For
git log --pretty
, I spent a day reading the man page, and wound up with a helper, which is aliased togit log --pretty=format:'%Cgreen%h%Creset %Cblue%ad%Creset %s%C(yellow)%d%Creset %Cblue[%an]%Creset' --graph --date=short
, it tends to be as terse asgit log --format=oneline
, but also includes the useful author and branch info ofgit log --pretty
.The
smart
flags are not built in Git. That's just my 'aliases' for the commands.I also have a similar pattern of command repetition. I will try your script. Thanks!!
If you need any additional commands, please let me know! I'll try to make your life easier :)
Sure.. Thanks!
Hey! I've noticed that in this post you use "guys" as a reference to the entire community, which is not made up of only guys but a variety of community members.
I'm running an experiment and hope you'll participate. Would you consider changing "guys" to a more inclusive term? If you're open to that, please let me know when you've changed it and I'll delete this comment.
For more information and some alternate suggestions, see dev.to/seankilleen/a-quick-experim....
Thanks for considering!
First of all thanks for your sharing
Second, if you are using z shell (zsh, if you are not using it, leaving everything and read about it now, it's amazing!) you can use the git plugin which is super cool
gcam - git commit -a -m
gp - git push
gl - git pull
gb - git branch
gst - git status
It saves me minutes (even hours) a day just using those aliases.
I do use zsh :)
Good job!
Can you please make a whole cheatsheet with all commands in pdf format?
Nice, thanks for sharing.
I have also created couple of bash helpers to streamline my git workflow: gyandeeps.com/git-helpers/
Love your script! Thank you so much for sharing π
Thank you! Make sure to have the most new version :)