Hacker News new | past | comments | ask | show | jobs | submit login
Git Commands That Cover 90% of a Developer's Daily Workflow (jsdev.space)
28 points by javatuts 2 days ago | hide | past | favorite | 19 comments





No `git rebase`?

Here are my stats for my last 300 or so git commands from my history

    $ history | grep git | awk '{print $3}' | sort | uniq -c | sort -rn

     71 log
     44 show
     34 diff
     26 co # alias for checkout
     24 cherry-pick
     23 status
     18 brs # alias for branch -v --sort=-committerdate
     13 rebase
     11 commit
     11 add
      8 push
      4 archive
      3 reset
      2 pull
      1 grep
      1 checkout
      1 br
Been doing lots of tricky merges recently hence all the cherry-picks! Not normally such a large part of my workflow.

For me, I generally don't go far beyond the commands in the article, but I /do/ make a lot of use of git rebase -i in my branches.

I'd like to suggest also mentioning `git add -p` (--prompt). It's very helpful for just adding changes relevant to the commit

It missed "git switch" and "git restore".

In similar fashion, this site has saved me countless hours fixing common git issues https://ohshitgit.com

I need to alias:

  git add .
  git commit -am "descriptive name"
  git push

to:

  git sync "descriptive name"

personally - skip the 'git add .'

It's a pretty terrible habit to get into, and will (not can - will) cause all sorts of headaches. From minor ones like personal editor configs getting dumped into the projects, all the way up to major ones like secrets ending up in your git history.

If you want something close, but much better, do something like:

    if [[ -n $(git ls-files --others --exclude-standard) ]]; then
        echo "There are untracked files.  Please add, remove, or ignore them."
    else
        git commit -am "descriptive name"
        git push
    fi

How about `git add --patch -all` to make it interactive? I have that aliased to `gap` and it is probably my most used git command.

That sounds better but I like the granularity I get from scrutinizing specific files or the patch takes too long to review.

I see your point, but find it worth it for convenience. Ultimately git is a tool I use to get the job done, and I want it out of the way. 99% of the time, I just want to sync my project, which doesn't only mean edits to existing files.

also gonna echo the same sentiment: where's rebase? :)

two other git log commands i find to be insanely useful are:

alias hlog='git log --date-order --graph --date=short --format="%C(green)%h%Creset %C(yellow)%an%Creset %C(blue bold)%ad%Creset %C(red bold)%d%Creset%s"'

and:

alias alog='git log --date-order --all --graph --date=short --format="%C(green)%h%Creset %C(yellow)%an%Creset %C(blue bold)%ad%Creset %C(red bold)%d%Creset%s"'

this is great when working in a repo w/a main "prod" branch that you don't commit to directly, but instead commit to "staging" or "dev". alog shows you the entire repo's history for all branches, and hlog is just the graph of the non-pushable branches (plus all feature branches).


Maybe not essential, but reflog is invaluable.

I also like to separate fetch from pull (fetch + merge).


restore and maybe switch are the two missing ones I think. Rebase for me, but that’s preference. Cherry-pick too.

my co-workers used to think I was an expert in git. In reality, they memorized 7 commands while I memorized 15

i memorized that a commit tree is a ordered set of patches. Everything goes from there.

Remove merge and add rebase and we agree :)

Oh and maybe cherry-pick


Both are essential.

There are other commands?

i can't take this seriously if there's no mention of the '--amend' option and 'rebase' command



Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: