2 ms·
Git is a tool that can do so many amazing things, things that might even seem impossible the first time you learn of them: - not only saving changes to files a
by seabass-labrax 3y ago
Git is a tool that can do so many amazing things, things that might even seem impossible the first time you learn of them:
- not only saving changes to files as an ordered log, but being able to reorder those changes as if you'd made them at a different time (git rebase)
- merging multiple, conflicting changes to files made by different people (git merge)
- homing in on a specific change in which a bug or a feature was introduced (git bisect)
It's not unreasonable that such a powerful tool might come with a cost. Considering the time that it takes in other professions to learn the tools of the trade, I consider Git to be a pretty good deal!
Personally, I found my understanding of and proficiency in using Git improved dramatically when I decided to resist the temptation to delete the repository and start again whenever I had a 'merge conflict', a 'missing remote' or a 'detached head' (yikes). Instead, I tried to work through the problem step-by-step, learning about such things as ref logs and branch tracking and the distinction between the work tree and the index. It was fun, informative and didn't even take that long in my opinion :)
I think that for such a widely-applicable task as distributed version control, Git is a fantastic piece of software, and would recommend every software developer take the time to learn it, keeping in mind that only a few centuries ago, a stone-mason might spend years learning to use a chisel, or just in the last century learning how to use a powered lathe. I see Git as the programming equivalent of the lathe or chisel - equally fundamental to the trade.
For those who aren't programmers (and thus don't feel the need to study Git in such depth) but still want to make use of version control, git-annex[1] provides one nice way to put binary files like MS Word documents into a repository and synchronise them across devices.
[1]: https://git-annex.branchable.com/ https://git-annex.branchable.com/