🌮 Git 'r done when you're done.
(Source/Credits: https://dev.to/chiangs/git-r-done-when-you-re-done-p5b)
Once again I'm waiting for my app to run its tests and build so I thought I'd write another quickie....
Once again I'm waiting for my app to run its tests and build so I thought I'd write another quickie.
Previously I showed how I wrote a git function for emergencies and I need to GTFO.
Today, I want to show you a more common process we all might do if we are working by ourselves or on small-teams.
When I'm done with a feature branch this is usually the steps I go through:
(Assuming I'm at the top level of my directory and I've done git push origin head -u
in the past)
```shell
{feature-branch} git add . {feature-branch} git commit -m "Awesome commit msg" {feature-branch} git push {feature-branch} git checkout develop {develop} git merge - {develop} git push ```
If I want to clean up the merged branch locally and remotely, I would also have to do this:
```shell
{develop} git branch -d feature-branch {develop} git push origin :feature-branch ```
That's a lot of steps.
Here's how I make it easier with git done
and git donep
, I actually have an alias setup for git
as g
so I'll be using that from now on:
I'm going to go into my .gitconfig
and create two new aliases like so:
config
[alias]
done = ""
donep = ""
Using the same syntax as my g tfo
function I'll create done
first which does the following:
- Merge the branch
- Deletes the local branch
- Deletes the remote branch
That function looks like this:
text
done = "!f() { git merge $1 && git branch -d $1 && git push origin :$1; }; f"
You will notice the $1
. That is a reference to a variable that will be passed in when calling the function which happens to be the branch name. Now, I have tried using -
and @{-1}
but deleting the remote branch part of the function won't accept those as references to the last branch used. So unless a reader here has an idea, I am relegated to passing in the feature branch name specifically, which in a way makes it more reusable too, but a bit of a pain if the branch name is complex or hard to remember. But at least, you still only have to type it once!
🤷♂️So how do we use it?
```shell
{develop} g done feature-branch ```
🤯 Boom. That's it.
But with this one, we haven't pushed the changes to develop remote. That's where donep
comes in.
text
donep = "!f() { git merge $1 && git branch -d $1 && git push origin :$1 && git push; }; f"
```shell
{develop} g donep feature-branch ```
note: this function also assumes you have done git push origin head -u
and set the upstream. if you haven't and don't want to, you can modify the function to:
text
donep = "!f() { git merge $1 && git branch -d $1 && git push origin :$1 && git push origin $2; }; f"
and run it like:
```shell
{develop} g donep feature-branch develop ```
🐱👤 Git r' done!
If you find this valuable, please leave a comment and follow me on Dev.to @chiangs and Twitter @chiangse, 🍻 cheers!
Comments section