> You can commit a change offline (git commit). Later on, when > you are online, you say `git pull' to get the current state of > the repository, and automatical merging happens (and the usual > warnings if there are conflicts). Finally, you say `git push' > to synchronize your git repository with the global one. > > Is this substantially different from CVS, or is it just relabeling? > It sounds like `git push' is basically equivalent to CVS commit. Correct. > With CVS, until you commit your changes, new changes can be installed > in the repository, and when you DO get around to committing your > changes, you will have to merge them with whatever others have > installed. Once you commit, others trying to commit will have the > burden of merging their changes with your already-committed changes. This is absolutely the same as with CVS, of course, but: your changes done offline, and which git can add with trivial merging, stay as atomic units. Unfortunately, ChangeLog file are likely to need manual merging each time. Many software projects which use git no longer maintain such a ChangeLog file manually but create it afterwards mechanically. There's a wonderful tool called gitk which enables you to display git changes in a very cleverly manner. However, this is not a TTY application but needs GTK. I don't know whether there exists a gitk equivalent which runs in a terminal. Attached is an image which shows gitk in action. Werner