Git 2.0 is here
blogs.atlassian.com
blogs.atlassian.com
There are some new features, some of them useful for a lot of people, some of them not so much.
It's good, but full of goodies? Nah. That's overselling it.
http://stevelosh.com/blog/2010/01/the-real-difference-betwee...
I feel strongly that `git checkout file` is correct though. What that operation is doing is taking something out of the DAG and putting it into the working tree. It's the same deal, the only difference is instead of pulling a tree object (associated with a commit) from the DAG into the working tree, you are instead pulling a glob. It makes intuitive sense to me that these two operations would be accessed through the same command. Furthermore, using the name 'revert' would make much less sense in the rather frequent case that you want to pull a blob from a commit that is not the current HEAD. Is it really "reverting" if I am pulling a file from a future commit in another branch into my working tree? I don't think naming commands after less powerful concepts is a good design decision.
No, they all want experience using Git. Do they actually need a distributed version control system? Probably not.
I am sure git is great for the complexities of developing the Linux kernel from remote locations, but most projects are not that. I would prefer something that is less distracting to the task in hand.
In my experience, many things were weird but just had to be learnt, submodules on the other hand, that's pretty crazy!
I sometimes feel like I'm the only one; I'm glad to hear that I'm not alone.
Why `-v`?
Looking at Git as it is now, I find it very unlikely to see a clean CLI in the nearest timeframe. Changes will happen (if they will) at a very slow pace.
[1]: http://semver.org/
Even if the interface you see as a user doesn't change, the internals do - for example submodules handling has been changed from a standard git dir to git file with directory link. This broke some of my scripts that made git interaction easier.
I don't want to slap something on top of git and hope that there are no edge cases in state/output parsing. I want an actual first-class interface that has at least a bit of consistency between commands.
As you can see, I went that way and it's not usable long-term.
Edit: changed symlink to git file, bad memory
For an example of difference in output, see http://stackoverflow.com/questions/3921409/how-to-know-if-th...
"""As of git version 1.7.3.1, git status doesn't say anything about the rebase status.""" - so you're left with "does some file under .git exist" approach. It's unlikely to change, but I don't believe it's part of any external interface - when it changes in the future, it changes.
Now, most people work with, what, 20% of git, tops? Why should we care about bloat if we don't use it? To me, there are two main issues: a. There are 3 ways if not more of doing every single logical operation; and b. The clutter makes it harder to find how to do stuff that is not trivial when you need it.
I really wish Git would be cleaned up and made more intuitive, rather than have more features and abstract more implicit behaviors.
For the 80% of people who want to just want to pull, commit, merge, push--that functionality is still there, and has even been improved in the last release.
Add --hard, --mixed, --soft for different effects. This command itself can be undone by going through git reflog and finding the appropriate commit.
For example, a UI could have a "create new branch" feature, which internally does a "create new reference pointing to commit xxx; checkout a working copy of branch y".