From Newsgroup: comp.emulators.apple2
On Saturday, August 21, 2021 at 9:42:14 PM UTC-7, Kent Dickey wrote:
You're not the first person to try to say Git is great, without being able to express that in a convincing way. How is a chart of 74 commands simple?
You're assuming that all 74 commands are used/needed in daily operations. They are not. I have over 200+ git repos and if I were sort the git commands by my usage over the last 7 years of using git I would hazard a guess at placing the most frequently used in this order:
* git status
* git diff --staged (along with other variations such as: git diff)
* git commit -m "reason foo" (along with variations such as: git commit --amend -m "Corrected foo")
* git add -p
* git push
* git pull
* git log -#
* git show
* git checkout -b foo, and git checkout foo (along with variations such as: git checkout head^2)
* git rebase, or git merge. (If you are the only developer on a repository this isn't even needed.)
These 10 commands will get you 97% coverage for basic version control for git. These two git commands are also done once per repo and will get you 98% coverage for basic version control.
* git clone
* git init
I would add these lesser used commands will get you 99% coverage for basic version control.
* git cherry-pick
* git bisect
A total of 14 commands isn't TOO complex. The "daily 10" is certainly manageable. How many commands does a typical version control system need for daily operations? 5?
The astute reader will notice I have used the qualifier "for basic version control". I would place git usage into 3 main camps: beginner, experienced, advanced. Once you find yourself needing to use git bisect you are starting to move beyond beginner usage IMO.
While you are correct that git has a LOT of power -- you are assuming you need to master 74 commands before you can be productive in git. That is false. Most of that power _isn't_ need to be for basic operations but you will find that as you use git more and more you will start to make [more] use of the more experienced commands such as git reset, git stash, git log --follow -- filename, etc.
Git provides a lot of power because as professional developers there are many scenarios where we need to inspect, modify, search, the history tree. Fortunately most of the power git provides isn't typically needed for day to day operations. The nice thing about git is that it scales from beginner to advanced. You will probably never "outgrow it".
Git _can_ have a difficult learning curve but like when learning any new tool you start small with your usage scenario. As you get more comfortable you expand the tool's usage. Git is like a swiss army knife. Due to its popularity there are hardly any scenarios where developers haven't thought of a solution. I'm NOT saying all those solution are clean, sometimes they are extremely messy, but for usage scenarios git certainly covers a lot of ground!
If you are just a hobbyist programmer then yeah, don't use git (or TortoiseGit, etc.), but at least use SOMETHING for version control such as TortoiseSVN, etc. or whatever you find easy. Not using _any_ version control, even for small/toy programs, is pure madness.
If you are a professional programmer not knowing git in this day and age is almost corporate/career suicide IMHO. There is a reason almost every other version control systems sucks and why git took the world by storm. i.e. I've written code while on an airplane and sync'd it back up once I was back in the office -- git makes this painless. A distributed version control system is a game changer. Even if working alone "git add -p" has _completely_ changed the way I do development. "Commit early, commit often" isn't just a meme. It greatly simplifies regressions.
As a professional games developer there are certain things that are deal breakers:
* Having less than 4 monitors on my primary dev box,
* Not using a distributed version control system, such as git,
* Not using a professional keyboard,
* Not using an ergonomic chair, and
* Not using wrist rests and/or an inclined trackball.
The "pain" isn't worth it. I'm certainly no git expert but looking back at the 7 years I've been using git whatever little bit of pain git introduced the power is completely worth it. "git bisect" is amazing for finding when a bug got introduced, or the reverse, when a feature stopped working. Which reminds me, I still need to upload my git repro. on using git bisect. =P
I'm not saying git is perfect. It is not.
* It is utter garbage for storing binary files -- which massively bloat your repository -- but it wasn't designed for that usage so it somewhat understandable.
* We've discussed the learning curve above.
The point is that while git certainly CAN have a difficult learning curve but it doesn't NEED to have one. Any version control system is going to have a learning curve. Whether that be checkout, lock, checkin, or git push/pull/add/commit it is going to take time to learn good practices. In programming I have two regrets:
* Not using gvim earlier, and
* Not using git earlier (or even just using any version control system for personal projects.)
I can't even begin to think of all the years I wasted using inferior tools. When AppleWin moved off of Berlios to GitHub at the time we didn't know how that would pan out. Looking back that was a REALLY GOOD decision -- it has streamlined our development process. This is important since for everyone on the team AppleWin is "just a hobby". GitHub's PR feature makes merging code quite painless since you can do all of it from the web interface. The ability for users to create issues, have automatic references to commits or other issues, for visual diffs, are really, really nice. If you need to interface with other developers and users, GitHub does a pretty good job of making it easy to manage code.
Not all git tools are the same. Stay away from BitBucket as it lacks basic features that GitHub does. For git clients, I will refrain since everyone has their pet favorite.
Out of all three options:
* Not using any version control
* Using a non-distributed version control, such as TortoiseSVN
* Using a distributed version control, such as git.
The last one, for my needs, wins by a landslide.
"Sales pitch" mode off. /s
m.
--- Synchronet 3.21d-Linux NewsLink 1.2