Git Legit
git-legit.org
git-legit.org
168 days ago - 26 comments: http://news.ycombinator.com/item?id=4332971
Not complaining at all about the repost, but I remembered previous discussions and people may find comments of interest there.
(Since this forum closes comments after N days on an article, reposts are the only way to continue discussion, however, context about previous discussions is always nice!)
"Git Workflow for Humans" "optimized for workflow simplicity" "branch workflows are dead simple" "Nice and simple – the way it should be"
As Legit is now described at www.git-legit.org, what would suggest to beginners that it's anything but the answer to their prayers?
I suppose if they squashed commits that weren't there's, then that's a problem of course. But just rebasing their own work between branches?
The real trouble I'd see for this mythical newbie is when they get in a situation that calls (correctly) for a force push. That would come-up if they fork an OSS repo, push some changes to their fork, then do a $ git pull --rebase from the OSS repo to bring in new changes.
When they go to push again to their fork, they will get an error that will require a force push. The force push will be fine because they are working alone, but it could cause an issue for a new git user.
But I'm a little unsure of what trouble you're afraid the maintainer would have.
"Once you're ready to share your commits, or pull in remote commits — just press the Sync Branch button. We'll perform a smarter version of pull --rebase && push that reduces merge commits but doesn't rewrite your merges."
from the first paragraph on the page: "Legit is a complementary command-line interface for Git, optimized for workflow simplicity. It is heavily inspired by GitHub for Mac."
More stupid terminology. Just what git needs.
switch, checkout, pull, push, commit, stash, branch, tag, fetch, merge, log, reflog, tree, clone, rebase, squash and cherry pick
isn't enough! let's add
publish, unpublish, harvest, sprout and graft
So what you say isn't really true. I would improve it to say that the existing terminology doesn't appear logical until you have learned about those basics. This is not the fault of git: any system becomes incomprehensible if you approach it with concepts in your head that are incompatible with that system.
A complete beginner may not want to start out by learning those internals, and that's okay. But at some point, it definitely becomes a worthy investment to take the mere hour or two that it takes to read through the relevant parts of the documentation.
Not wanting to argue which perspective is right, just that you can't make a broad sweeping statement that Mercurial has a better interface
At least (in trying to match what the GitHub applications do) it's not trying to invent a completely new system. But I don't see this getting much traction unless GitHub adopts it and pushes it as their "official" command line client.
In practice, the only ones I use are sync, publish, and unpublish.
I've had legit installed for months. Only command I ever use is "switch."
I don't trust anything else.
This doesn't improve git. It just complicates things. Stick to the interface git gives you and define your own intuitive aliases based on the ones you use the most.
The most effective way to work is to self-assess.
Most people as a normal part of their job can indeed install software on their development machines. And those that can't won't even be looking at new software projects - what would be the point?
$ git stash $ git fetch $ git merge origin/$current-branch $ git push origin $current-branch $ git unstash
It's actually slightly fancier than that, the push actually reduces merge commits but doesn't rewrite your merges. Same as GitHub for Mac.
If you do have local changes, then you would need to git stash/stash --pop before/after that command. I use rebase to keep down on unneeded merges for the common case of having exactly one upstream and not merging several branches together.
I'm looking at you, jQuery.
For them, Git is a mystery that just doesn't seem to be able to be mastered, no matter how much reading, training and practice you get them to do. I spend my life consulting with such firms and I've introduced Git to each, but only at one have they managed to keep using it without screwups.
Anything that would simplify Git for the ordinary mortal human being, who wants to use it for team collaboration and to have a change history and a branching/merging model that works (unlike SVN), would be greatly welcomed. As it stands it's great for uber-coders/HN readers (those it was designed for), but for normal people...
1. Git aliases.
You can add configuration to git so that git subcommands invoke arbitrary commands:
https://git.wiki.kernel.org/index.php/Aliases
This is what legit does, here:
https://github.com/kennethreitz/legit/blob/develop/legit/cli...
2. Any executable in your path named 'git-foo' can be invoked by 'git foo'.
Neat, huh? It's a useful way to create your own workflow scripts without having to touch your git install.
once this abstraction leaks (and it will), one will be forced to the git docs anyways.
my $0.02
> Legit is a complementary command-line interface for Git, optimized for workflow simplicity. It is heavily inspired by GitHub for Mac.
Some are much clearer though, especially switch, sync and publish.