X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=tour.mdwn;h=2b908b3ee53be27947d21cbbf1182665c469dc79;hb=d43fda595056cbaa704c0be939b2315204c3c946;hp=ac6935269f93725256f6fbf065242895028dd703;hpb=1f3c9252faba1f5cc0ebe90f6b6de37b46c4b83d;p=hgbook-git diff --git a/tour.mdwn b/tour.mdwn index ac69352..2b908b3 100644 --- a/tour.mdwn +++ b/tour.mdwn @@ -1,11 +1,11 @@ -## Chapter 2 +## Chapter 2 A tour of git: the basics ### 2.0 Copyright -This document is a modified version originally known as "Distributed -revision control with Mercurial" and originally authored by Bryan -O’Sullivan. The original document was obtained from +This document is a modified version of a document originally titled +"Distributed revision control with Mercurial" and originally authored +by Bryan O’Sullivan. The original document was obtained from . Copyright © 2006, 2007 Bryan O’Sullivan. @@ -29,6 +29,16 @@ Changes made by Carl include the following: * Eliminate line numbers from examples * Modified to describe git instead of mercurial +The source of this modified version can be obtained via git: + + git clone git://cworth.org/git/hgbook-git +or + git clone http://cworth.org/git/hgbook-git + +and can be browsed online: + + http://git.cworth.org/git/hgbook-git + ### 2.1 Installing git on your system Prebuilt binary packages of git are available for many popular @@ -50,23 +60,23 @@ install git with a single click. The package name to look for is often git, but is sometimes git-core, (due to an unfortunate name with git, meaning GNU Interactive Tools). - * Debian + * Debian apt-get install git-core - * Fedora Core + * Fedora Core yum install git - * Gentoo + * Gentoo emerge git - * OpenSUSE + * OpenSUSE yum install git - * Ubuntu + * Ubuntu apt-get install git @@ -100,7 +110,7 @@ more friendly to new users than versions 1.4 and older. If you aren't yet running version 1.5 or newer, it's highly recommended that you upgrade. - $ git version + $ git version git version 1.5.3.2 #### 2.2.1 Built-in help @@ -257,7 +267,7 @@ By default, this command prints a brief paragraph of output for each change to the project that was recorded. In git terminology, we call each of these recorded events a commit. -The fields in a record of output from “git log” are as follows. +The fields in a record of output from “git log” are as follows. * commit This field consists of a string of 40 hexadecimal characters. This is a unique identifier for referring to particular commits. @@ -279,20 +289,6 @@ The fields in a record of output from “git log” are as follows. The default output printed by “git log” is purely a summary; it is missing a lot of detail. -Figure [2.1][8] provides a graphical representation of the history of -the hello repository, to make it a little easier to see which -direction history is “flowing” in. We’ll be returning to this figure -several times in this chapter and the chapter that follows. - -* * * - -![PIC][9] - -Figure 2.1: -Graphical history of the hello repository - -* * * - #### 2.4.1 Commits, revisions, and talking to other people As English is a notoriously sloppy language, and computer science has @@ -399,7 +395,7 @@ created: Another useful option is -n or --max-count which, unsurprisingly, limits the maximum number of commits to be displayed. -#### 2.4.3 More detailed information +#### 2.4.5 More detailed information While the default information printed by “git log” is useful if you already know what you’re looking for, you may need to see more details @@ -564,7 +560,7 @@ scripted example this way. Since you’re not under the same constraint, you probably won’t want to use sed; simply use your preferred text editor to do the same thing.) - $ sed -i '/printf/a\\tprintf("hello again!\\n");' hello.c + $ sed -i '/printf/a\\tprintf("hello again!\\n");' hello.c The “git status” command will tell us what git knows about the files in the repository. @@ -683,7 +679,7 @@ the files directly. Use your favorite editor to create a file called then it will be there already). The initial contents of your .gitconfig should look like this. - # This is a git configuration file. + # This is a git configuration file. [user] name = Your Name email = you@example.com @@ -934,7 +930,7 @@ command is coneptually the combination of two commands, "git fetch" and "git merge"; we can run those separately to examine the changes before applying them locally. First we do the fetch: - $ cd hello-pull + $ cd hello-pull $ git fetch ../my-hello remote: Generating pack... Unpacking 3 objects... @@ -1014,6 +1010,22 @@ the common case for the upstream-tracking scenario), then "git pull" with no explicit repository is suffcient, and it will default to pulling from the same repository as the original clone. +[XXX: The structure of the preceding section follows that of the +original hgbook. But an alternate structure that arranged to pull from +the originally cloned repository (as would be common) would allow for +more straightforward use of git's features. For example, instead of +the silly FETCH_HEAD stuff it would allow for "git fetch" and "git log +master..origin" to be a very nice replacement for "hg +incoming". Similarly, below, "git log origin..master" would make a +nice replacement for "hg outgoing" which is something I didn't offer +at all. One could also use git's remotes with the myriad repositories +as used here, but it would require doing things like "git remote add + ../hello-pull" and that seems like a bit much to introduce +for a turorial of this level. If nothing else, if the above section +seems a little intimidating, understand that it's because things are +not presented in the most natural "git way", (and I'm a little too +tired to fix it tonight).] + #### 2.8.2 Checking out previous revisions If any users of mercurial are reading this, they might wonder if @@ -1105,7 +1117,7 @@ limited to working with local repositories. Each works in exactly the same fashion over a network connection; simply pass in a URL or an ssh host:/path/name specification instead of a local path. -## Appendix D +## Appendix D Open Publication License Version 1.0, 8 June 1999