Besides the "basic" commands of Git, everyone has their own little Git tricks they use. I wanted to quickly write a list of my own which I tend to ...
For further actions, you may consider blocking this person and/or reporting abuse
Assuming that you have set your
git-branchalias already, you could simplify this as:alias git-up="git push -u origin \$(git-branch)"EDIT: escaped $ to prevent running the alias on definition, thanks @darlanalves
Git assumes the current branch implicitely, so the following also works:
Even better is to use a git alias for this:
so you can use it like
$ git up.If you think you need to explicitly specify the branch anyway you can define an alias like this:
Nice! Thank you for the tips!
The
git upalias is perfect.Not specifying the branch still gives me a
Fatal: The current branch has no upstream. Any ideas why?Did you specify the
-uflag?Yep, I copied and pasted this exactly
git config --global alias.up 'push -u origin'I like this kind of articles, we can get some ideas.
From your examples, I had the feeling that you're not sure how to include arguments or bash commands into aliases. You might be interested in one my articles:
How do you prepare your commits?
Sandor Dargo ・ Jul 3 ・ 5 min read
I do know. And the comments taught me a good deal but I don't like adding bash commands to git aliases since I use git on non Linux machines
Sorry then. How come you use
sedandxargsin your aliases? Or you want to maintain only one.gitconfigand push all the rest to OS-specific setenvs?That's it!
I write completely different aliases for Powershell but I get to still use identical git aliases
Have you considered using Git BASH on windows?
yep, quickly dismissed it. It's not worth it plus Powershell is just so damned good!
I am afraid to do
git cherry-pickwithout the-nparameter because cherry-picking automatically commits after picking the changes. Most of the time I want to review the changes and commit them manually. So I do:ooh, i wasn't aware of the dry run. I tend to not care because I can always do an interactive rebase and delete those commits.
Nice post!
For the "get the name of the current branch" there's a git plumbing command that can help you get the current branch name reliably without the text manipulation:
I tend to keep this one as part of my git aliases:
Here's a quick write-up if you're interested!
On the current branch alias, don't forget
git branch --show-currentwith Git 2.22: stackoverflow.com/a/55088865/6309.I used it in stackoverflow.com/a/56713414/6309
also if you've got git > 2 this works
git status --porcelain=v2 --untracked-file=no --branch \
| grep branch.head \
| cut -d ' ' -f 3
I HAD NO IDEA. This is awesome! Thank you! :)
looks like I'm still a little behind on versions. I'm on v2.17.x
Neat tip though, I'll have to remember to come back and change my rc files to use this :)
My approach for this is
git commit --amend --no-editI like that better. 👍
My approach to get the current branch is this:
alias gcb='git symbolic-ref --short HEAD'(gcb to remind me of Git Current Branch)
I like it more because it uses only git and I don't depend on piping through another app.
Why use shell aliases for something that's
gitspecific? You can just usegitaliases.Instead of:
Do:
Now, from within any repo, you can run
git this-branch, and you didn't have to add anything to your shell, and if you switch shells, it will continue to work.That's pretty cool! I basically just learned about that from people on this post
great! also take a look to this: ohshitgit.com/
Thank you for the nice writeup Antonin! I'll definitively take over a few :)
Might not be totally related, but in order to not be able to commit things that are not to be committed, we're using (husky)[github.com/typicode/husky] and a pretty strict linting :)
We actually use husky too!!
Great tips, Antonin!
I've been using similar tricks in my daily flow... And they definitely help productivity!
I've added them to a repo so I can share between my machines and with other devs :)
github.com/darlanalves/faster-git
You can simply do
git push -u origin HEADand not have to mess around with evaluating the branch name.Your trick git reflog saved my today working. Thanks :)
That's awesome! I'm happy to hear that!
Thanks for sharing!! I have a question about
git log -1. Why don't you usegit showinstead? Does it have any benefits?I just do this to get the current branch:
git branch | grep '*'I had no idea about cherry-picking a list of commits! This is a game-changer!
You should also have *.log in your .gitignore
And *.sw[a-p] if you have vim friends.
Great thanks!