

The real problem with git. - d0m

Sorry I have no blog. The commands make no sense and are hard to remember. It would be so quick and so easy to remember:
 - git stage add file 
 - git stage remove file
 - git stage list.<p>Sorry, I can't give you the real commands, I never remember them.<p>Oh, and also, why can't it save empty directories? Is there a clause somewhere saying that empty directory isn't important?<p>Oh, and last thing: We all know that branches are great and cool, but I'm still tired of rebuilding everything to make the history "cute".<p>My 5 cents, happy karma downing
======
aphyr
Really? I came from RCS, CVS, and SVN. Git's toolkit took about ten minutes to
get used to, but then I suddenly realized that it made _far_ more sense than
SVN. git add, git status, git commit -a. All repos are equal. Everything is
small, and everything is fast. Really fast.

There's rarely a need for git rm or git mv, since they're implicit. Waaay
better than SVN, where I could never remember if I had to move it by hand
first or afterwards, and half the time committed multiple copies of a file I
meant to rename.

The empty directory thing has never been a problem for me; my software creates
directories as needed. You can always drop a .file in the dir if you really
need it.

Branches work great. They're just pointers! Plus you can revert merges, and it
just _works_.

I never rebuild the history, but I guess if I was working in a large team with
complex patchsets I might. Our team of six seems to get along just great with
a central free-for-all repo.

Gitk is ugly. No two ways about that. :D

~~~
d0m
Oh, I never said SVN was better :)

------
sunchild
Commands make no sense?

git add .

git commit -am "feature working great"

git push

git branch new_feature

git checkout new_feature

git commit -am "new feature working great"

git push origin new_feature

How hard is that?!

~~~
d0m
There are lots of hidden step between all your commands sir, and you perfecly
know it.

Now, start removing files from your "git add ."

Or switch branches without losing your change.

Or rebasing.

I never said it wasn't possible, neither _hard_. But, the interface (read CLI)
still sucks.

~~~
sunchild
As far as I can tell, the only step that I left out is "git init".

Switching branches without losing your changes is poor form anyway. You should
be committing before you switch. If not, you can create multiple local
branches (ick!)

As for removing, it's familiar: "git rm removed_file"

------
zaius
You can easily make an alias for all of those commands.

I would say that "git add" is simpler than "git stage add". "git stage remove"
would definitely be nice. "git reset HEAD file" is a bit clunky. What would
"git stage list" do?

Saving empty directories is annoying. Just touch an empty ".gitignore" file in
the directory and you can then add the directory.

If you don't like making your history cute, and you don't see any advantages,
don't do it!

~~~
d0m
I won't fix git bad command line interface. You'll agree with me that it's
plain stupid to start creating aliases for such basic commands. However, I'll
be happy to create alises for more complicated stuff. I mean, I shouldn't have
to use alias to fix git' bad command line interface.

git stage list would be a kind of git status.

To stage file, I use git add. To view them, I use git status. To remove a file
from a stage, I use git reset .. That's just plain wrong and annoying. It's
like that for every part of git.

I don't see why saving empty directories is annoying. If I don't want a
directory, I'll just remove it? Or in the opposite, if I want an empty
directory, I'll add a directory? Why should I put a hidden file inside a
directory to have it added by git?

Finally, for the history, I'm just saying that's it's too complicated for
nothing. Of course I can avoided it. I also can use SVN and avoid branch
because they are complicated, but that's not the point.

~~~
zaius
I was agreeing that saving empty directories is difficult - it's annoying that
you have to put an empty file in them.

------
tetha
Hm, I am having troubles actually formulating why I think you dislike git. I
think the best description I can come up with is that git developers group
commands by different categories than you do.

Let's take a look at this: (1) git add puts things into the index, while (2)
git reset sets the working tree and/or the index back into a certain stage.

The git developers basically grouped "adding stuff" and "setting things back"
together, while you would like to group "managing the index" and potentially
"managing the working tree" together (such that "stage" is "manage index",
while "tree" (or something like that) would be "manage working tree").

So I think no one is really right or no one is really wrong and nothing is
really bad. There is just a perspective mismatch

------
cmelbye
If it's really so hard to memorize a certain command, make an alias.

My aliases: <http://gist.github.com/344530>

------
ozataman
If you are using a Mac, try gitx as the front-end.

------
d0m
Oh, and gitk is so damn ugly.

