Git rant, Part II - the word is the thing
-
So I'm realizing that part of my problem is with the terminology. I expect "commit" to mean "save changes to the remote repository." I expect "checkout" to mean "get the changes from the remote repository." The fact that all the documentation I read about Git uses those same words, but with completely different meaning, leads to a huge amount of confusion and conflict with my mental picture of a VCS. To all the potential git authors / bloggers / developers out there: I have no problem with local repositories, staging areas, stashes, whatever, but PLEASE, use different words because they have different meanings. For example, "commit" in Git could be better described using the word "stage". Committing, the way non-git'ers think about it, could be better described using the phrase "push stage" or something similar. In fact, I don't think the word "commit" should be used at all with Git! Marc
Latest Article: Intertexti - Resurrecting Apple's HyperCard
My BlogWell, let's compare SVN's commit command to git. In SVN a commit saves a set of changes to the repository. This is what you do in Git as well. The main difference is that in git your repository is located in your .git folder. Fetch and push in git is simply commands that you use to synch repositories. Git uses the correct terminology, keep in mind that there is no technical difference between a git repository on your development server and on your machine. You simply use them differently.
-
So I'm realizing that part of my problem is with the terminology. I expect "commit" to mean "save changes to the remote repository." I expect "checkout" to mean "get the changes from the remote repository." The fact that all the documentation I read about Git uses those same words, but with completely different meaning, leads to a huge amount of confusion and conflict with my mental picture of a VCS. To all the potential git authors / bloggers / developers out there: I have no problem with local repositories, staging areas, stashes, whatever, but PLEASE, use different words because they have different meanings. For example, "commit" in Git could be better described using the word "stage". Committing, the way non-git'ers think about it, could be better described using the phrase "push stage" or something similar. In fact, I don't think the word "commit" should be used at all with Git! Marc
Latest Article: Intertexti - Resurrecting Apple's HyperCard
My Blog -
So I'm realizing that part of my problem is with the terminology. I expect "commit" to mean "save changes to the remote repository." I expect "checkout" to mean "get the changes from the remote repository." The fact that all the documentation I read about Git uses those same words, but with completely different meaning, leads to a huge amount of confusion and conflict with my mental picture of a VCS. To all the potential git authors / bloggers / developers out there: I have no problem with local repositories, staging areas, stashes, whatever, but PLEASE, use different words because they have different meanings. For example, "commit" in Git could be better described using the word "stage". Committing, the way non-git'ers think about it, could be better described using the phrase "push stage" or something similar. In fact, I don't think the word "commit" should be used at all with Git! Marc
Latest Article: Intertexti - Resurrecting Apple's HyperCard
My BlogQuote:
I expect "commit" to mean "save changes to the remote repository." I expect "checkout" to mean "get the changes from the remote repository."
Hmmm, I think you nailed the problem right here in your statement. You use the word "remote" twice. The premise is in git is that you are the repository.
-
So I'm realizing that part of my problem is with the terminology. I expect "commit" to mean "save changes to the remote repository." I expect "checkout" to mean "get the changes from the remote repository." The fact that all the documentation I read about Git uses those same words, but with completely different meaning, leads to a huge amount of confusion and conflict with my mental picture of a VCS. To all the potential git authors / bloggers / developers out there: I have no problem with local repositories, staging areas, stashes, whatever, but PLEASE, use different words because they have different meanings. For example, "commit" in Git could be better described using the word "stage". Committing, the way non-git'ers think about it, could be better described using the phrase "push stage" or something similar. In fact, I don't think the word "commit" should be used at all with Git! Marc
Latest Article: Intertexti - Resurrecting Apple's HyperCard
My BlogMarc Clifton wrote:
I expect "commit" to mean "save changes to the remote repository." I expect "checkout" to mean "get the changes from the remote repository."
I think, as other have mentioned, this is where the problem lies. 'commit' and 'checkout' still mean the same thing as in SVN, it's just that you are working with a local repository, instead of the remote one. I have been using SubVersion for years, both at work and for my personal projects. I signed up for a GitHub account a while ago to check what all the fuss was about, and never really started using it. It was too complex and confusing. I felt just like you do ;) Recently, I started collaborating on another project which was hosted on GitHub. This forced me to learn the mechanics of Git. Took me quite a while, and I still have the Git Book[^] open in a browser window whenever I need to do anything more than a local commit, but I am starting to see the advantages... especially for multi-developer projects. Not sure if I would use it for solo projects, but then again unless I know I am never going to make this code available to anyone else, I might as well use something where I can easily manage outside contributions.