4 ms·
At least some of these are what makes git awesome. * commit changes manually - I find my self picking individual changes out of the current state of my sourc
by pja 12y ago
At least some of these are what makes git awesome.
* commit changes manually
- I find my self picking individual changes out of the current state of my source & committing them individually all the time, so this is just perfect.
* history & branch navigation.
- Um. Not sure what the problem is here. I can checkout anything I like, hop around the history at will, tag any version with meaningful names etc. Am I missing something?
* confusing command structure.
- Yeah, have to give you this one. It is (slowly) getting more consistent over time at least.
* history rewriting
- this means I can hack & commit away then rewrite my changes into a logically consistent series of changesets that make sense individually before pushing to the main repo. I rewrite history all the time before pushing.
* no merge tool
- but is happy to use whatever merge tool you plug into it, which works pretty well in my experience. (See the git-mergetool manpage.)
* submodules
- Yeah, these are mostly awful.
I think git (or mercurial for that matter) is great for people who see having a clean, well documented change history where every commit makes sense in and of itself as a worthwhile thing to have. If you're the kind of developer who just uses a VCS as a sort of 'source code backup' and your revision history consists mostly of a long series of "Update" comments then all the extra power that git has is just extra complexity that you don't need.
- nulltype 12y agoGit makes it way harder than necessary to do all these things and has a steep learning curve (generally a euphemism for bad design). I'm proposing that you can get all the benefits you talk about but in a far more usable manner. I like a clean master branch with atomic sensible commit messages as much as the next man. Git just makes it a real chore to get there. You seemed confused about the history and branch navigation, so maybe I can explain that one better. What I want is to visually view the history of a file, and trace, for instance, a function as it moves through my project, into different files, etc. I also want to easily find code that I deleted in the past to use as a reference for implementing a new version of the code, rather than keeping it in some "obsolete" folder in source control. I have seen people who do that. There are ways to do these things now involving searching git logs and viewing diffs or checking out old branches, but the interface is very poor. Even the interface on Time Machine is better than git, and that thing isn't build to source code. But perhaps you are correct. Maybe most people use git primarily as a backup service for code. If so I guess git should make that a way better process. I will point out that github actually offers a way better interface to git than git does. It just still has a long way it can go.