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
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.
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).
No `git rebase`?
Here are my stats for my last 300 or so git commands from my history
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
In similar fashion, this site has saved me countless hours fixing common git issues https://ohshitgit.com
I need to alias:
to: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:
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
Remove merge and add rebase and we agree :)
Oh and maybe cherry-pick
Both are essential.
There are other commands?