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:

  1. Merge the branch
  2. Deletes the local branch
  3. 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!