4 ms·
Git Commands That Cover 90% of a Developer's Daily Workflow
- the__alchemist 1y agoI need to alias: git add . git commit -am "descriptive name" git push to: git sync "descriptive name"
- horsawlarway 1y agopersonally - 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
- the__alchemist 1y agoI 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.
- open-paren 1y agoHow about `git add --patch -all` to make it interactive? I have that aliased to `gap` and it is probably my most used git command.
- cholantesh 1y agoThat sounds better but I like the granularity I get from scrutinizing specific files or the patch takes too long to review.
- epmatsw 1y agorestore and maybe switch are the two missing ones I think. Rebase for me, but that’s preference. Cherry-pick too.
- deleted 1y ago[deleted]
- rentonl 1y agomy co-workers used to think I was an expert in git. In reality, they memorized 7 commands while I memorized 15
- hbogert 1y agoi memorized that a commit tree is a ordered set of patches. Everything goes from there.
- Areibman 1y agoIn similar fashion, this site has saved me countless hours fixing common git issues https://ohshitgit.com https://ohshitgit.com
- speff 1y agoI'd like to suggest also mentioning `git add -p` (--prompt). It's very helpful for just adding changes relevant to the commit
- deleted 1y ago[deleted]
- nickcw 1y agoNo `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.
- mercer 1y agoFor 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.
- karmakaze 1y agoMaybe not essential, but reflog is invaluable. I also like to separate fetch from pull (fetch + merge).
- foobarkey 1y agoRemove merge and add rebase and we agree :) Oh and maybe cherry-pick
- seba_dos1 1y agoBoth are essential.
- realaleris149 1y agoThere are other commands?
- incomplete 1y agoalso 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).
- hbogert 1y agoi can't take this seriously if there's no mention of the '--amend' option and 'rebase' command
- OutOfHere 1y agoIt missed "git switch" and "git restore".