1. Get all latest changes without merging
Stop pulling code that you think will break! Having fetch
in your workflow allows you to grab updated code without immediately merging it. Once the code is fetched, you can check it out like any other branch. When you're satisfied, then you can merge.
git fetch --all
# git checkout upstream/some-branch
2. Push upstream regardless of current branch name
Stop typing the branch names especially when they are long branch names. Just tell git you want to push the current branch to a remote location. HEAD
is a key word that tells git to use the current branch.
git push production head
# git push origin head
# git push github head
3. Label your stash
This is useful if you stash a lot of code and you want to remember what the stash contains at a glance.
git stash save -m "my work in progress"
4. Use a stash from ages ago
Stop undoing stashes with git pop
to get to an old stash. You can apply a stash that you created ages ago by using the following command.
# git stash list
git stash apply 3
5. Checkout the previous branch
This is super helpful when you are working on small features and you want to compare behavior/performance by toggling branches. You don't have to type the names, just use the minus sign.
git checkout -
I like this command so much that I made a quick YouTube shorts video showing it off!
6. Change the base of the branch after doing a checkout
This is useful if you created a new branch but you based it off the wrong branch. For example, say you wanted to branch from the beta code, but you accidentally branched using the production code.
git rebase --onto beta production feature
# git rebase newBase oldBase currentBranch
7. Move uncommitted changes to new/existing branch
git switch -c new-branch
# git switch existing-branch
Bonus - Fuzzy Checkout
This custom command allows you to quickly switch to another branch without typing the entire name. This is super useful when you are using a naming convention and you are tired of typing a prefix like feature/
or issue/
function fc() {
gco "$(git branch --format='%(refname:short)' | grep $1)"
}
If your branch name was called feature/dropdown-select-color
you could quickly switch branches by doing something like this.
fc dropdown
Top comments (32)
Call me crazy, but I have never, EVER, had to type a single
git
command. I use Visual Studio Code with the Git Graph extension. It does everything for me without having to invest brain cells in learning a bunch of CLI commands.It's worth it because then you can pretend to be a hacker!
The issue I have had is that people don't know how to use their UI. This is true with command line as well, but then we would at least be in the same environment.
If we used the same GUI then that would be the same. But I find every GUI to be dangerous. They try their best to help but always make it easy to throw out unsaved changes (git hates doing this).
I have not found a git GUI where I don't need to spend mental energy getting the GUI to do what I want.
Btw, new command learned!
git switch -c new-branch
I normally run
git stash ; git checkout -b new-branch ; git stash pop
to achieve the same result.But
switch -c
andcheckout -b
are the same. They both requirestash
if git needs to update a modified file.Does it allow interactive rebase? Rebase onto another branch? Bisecting?
Pushing of a specific revision (not head)?
(I mention only actions I have to do regularly)
Rebase for sure but don't ask me. Install it and see for yourself. If it suits you then great.
lol
So you depend on many others for minimal needed git things for CI/CD?
I have my minions for CI/CD, yes. I focus on programming, and then I let them lift that part for me. :-)
I work inside IDE, but use console for git just for fun.
If I should make some complex merge, then I prefer to use some GUI to be sure everything is going OK.
So you're not the go-to guy when things break in unexpected ways in your workplace.
Git-related? Usually not. But then again, under my eagle eye things don't break. :-)
I use that too but being old school have it's own level of satisfaction :P Cheers
I would encourage you to add that last function as a git alias, rather than a command in your
.bashrc
.Something like:
Then, you call it with
git fc dropdown
. Sure, it's more characters to type, but it enforces mentally that it's agit
command that you're running, and, if you ever switch shells, you don't have to move that over.you can also type
git push -u origin HEAD
for the upstream.Yeah definitely use the
-u
or--set-upstream
flag if you usegit pull
in your workflow otherwise you'll have to typegit pull origin <branch>
.I don't use pull though
I'm sorry, maybe I'm missing something. But why do need to type
git push production head
if you can just dogit push
? It will push your current branch to it's remote.Nice article! I also like the
git add --all -p
Cool, article! I'll make use of this one:
git switch -c new-branch
Great article, keep the good work! Liked and followed! 🚀
Thanks Wade!
Great article Wade, Thank you!
Never heard of
git switch
; Good to know. I am now wondering about the difference betweenswitch
andcheckout
.Thanks for sharing, BTW! Keep it up!
"switch" and "restore" are relatively new offsprings from "checkout" (approx. 2 years old). It's not strange that many guides still omit them.
Switch is an improved interface from checkout. Have not needed checkout though: git switch --detach , is a bit longer.
For example previous branch: git switch -
Some comments may only be visible to logged-in visitors. Sign in to view all comments.