(Replying to PARENT post)
Having to 'unfuck your branch' is a result of doing more than just storing compressed snapshots.
This is probably because all the training material and tutorials assume people want to do more than just snapshots, so as you follow along when getting set up it's easy to get into those kinds of situations.
As others have said, doing the compressed snapshot workflow is as easy as adding everything to a git repository, and committing it every time you want to make a snapshot.
The biggest hurdle is having each snapshot 'replace' the current one if you want to go back and look at it, but that's not a hard thing to adjust to for the value you get by using git's machinery for the snapshot workflow:
- fast and efficient remote backups
- greater compression (by using a shared object store for all snapshots)
- easy comparison of different snapshots
- bisection of snapshots to identify when a bug was introduced (including ability to easily automate running tests while bisecting)
- ability to change workflow in the future as needs change, in particular adding in remote collaborators, without having to change versioning system/workflow (well not too much of the workflow)
- rich ecosystem to easily publish source if desired at some point
- and lots more!
Many of these things are possible when you have a list of compressed archives of your source folder, but git really does make it much easier and you don't need to go all in on complex workflows to take advantage of it.
(Replying to PARENT post)
(Replying to PARENT post)
If thre's two of you, I might be so bold as to suggest it would be worth giving SVN a try. All the usual handy version control system stuff that makes collaboration easier, but the mental model is simpler than git (with all the things you can imagine that might imply), and you've got a handy escape hatch, in the shape of svn lock, for non-mergeable binary files. Great for PSD files and so on.
(Another thing about SVN that's different from git: working copy disk usage is proportional to size of HEAD, not size of repo. You can reasonably use it for distributing binary builds to non-programmer team members, for example.)
(Replying to PARENT post)
Everything seems so simple and then suddenly you accidentally deleted all your local changes and have a bunch of similar but not identical branches. You get a message saying your head is detached and that feels right. At least your working tree is clean, you'd hate to have a dirty working tree.
You have a pressing need to learn merge but that launches its own fun minigame:
https://stackoverflow.blog/2017/05/23/stack-overflow-helping...
It's so popular and well documented that every time you get confused it feels like a personal failure.
The promise of git is phenomenal, and I know a lot of people realize that by mastering it. I just wish I had figured out a way to learn it more iteratively. It felt like there were a bunch of frontloaded concepts you need to master to get yourself back out of trouble. And if you ask for help from someone who doesn't include whatever you messed up in their normal workflow, even if they've used git for years they might not have any idea.
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
Version control has nothing to do with the number of developers, it's a tool used to snapshot code, allowing easy tracking, reversal, and plain old "I'll finish this later". I couldn't imagine trying to develop without being able to make a branch, try something out, jump back and fourth between features, and then merging everything together later.
I can't stand the command line tool, but a nice GUI like Sourcetree or TortoiseSVN makes juggling very nice.
(Replying to PARENT post)