19
Why Git is hard
(roadrunnertwice.dreamwidth.org)
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Resources
Rules
Git Logo by Jason Long is licensed under the Creative Commons Attribution 3.0 Unported License.
I had a really pleasant experience using mercurial. Some of the things git may be missing:
commit -i
. Arrow keys quickly fold and unfold files/chunks/individual linespublic
commits were seen by other people and are considered immutabledraft
commit is your regular WIP local commit and can't be a parent to apublic
commit.secret
commit with your printf debugging won't be uploaded by accidentrebase
, your previous commits are markedobsolete
and hidden from most UI. For an obsolete commit it is easy to find it's updated version. The graph of obsolete revisions is an orthogonal DAG on top of the regular commit DAG.git add -p
might not have a fancy TUI interface but it supports picking files/chunks without an issue. I'm not sure how this could be described as a UI problem.I'm not sure how that would be useful in Git's perspective. In Git, public commits are commits pushed to a shared remote repository, and draft/secret commits are just local commits that you don't push. I'm not sure what value those specialized types of commits add.
Git's approach sounds simpler, consistent, and coherent, and thus simple to learn. I'm not sure what was gained by pushing that level of complexity onto Mercurial.
I'm also not sure if that makes sense. If you rebased a branch, you don't expect the original branch to stay there. As the name implies, what you want to do is to replay a sequence of commits onto another branch. In the rare cases you wish to keep the original branch in place, you just create a new branch alongside the old branch and rebase the new one instead.
Keeping the old branch in place after rebasing it feels inconsistent and illogical.