annotate pending/git-quick.html @ 77:27dcbe1b4669

The git quickstart guide I've been working on for ages.
author Rob Landley <rob@landley.net>
date Thu, 18 Oct 2007 18:40:17 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
77
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
1 <title>Following Linux kernel development with git</title>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
2
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 <h2>A "git bisect HOWTO" with a few extras.</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
4
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 <p>This document tells you how to follow Linux kernel development (and
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
6 examine its history) with git. It does not assume you've ever used a source
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
7 control system before, nor does it assume that you're familiar with
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
8 "distributed" vs "centralized" source control systems.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
9
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
10 <p>This document describes a read-only approach, suitable for trying out
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
11 recent versions quickly, using "git bisect" to track down bugs, and
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
12 applying patches temporarily to see if they work for you.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
13 If you want to learn how to save changes into your copy of the git history and
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 submit them back to the kernel developers through git, you'll need
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
15 <a href=http://www.kernel.org/pub/software/scm/git/docs/tutorial.html>a much
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
16 larger tutorial</a> that explains concepts like "branches". This one
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
17 shouldn't get in the way of doing that sort of thing, but it doesn't go there.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
18
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
19 <h2>Installing git</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
20
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
21 <p>First, install a recent version of git. (Note that the user interface
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
22 changed drastically in git-1.5.0, and this page only describes the new
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
23 interface.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
24
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
25 <p>If your distro doesn't have a recent enough version, you can grab a
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
26 <a href=http://www.kernel.org/pub/software/scm/git/>source tarball</a> and
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
27 build it yourself. (There's no ./configure, as root go
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
28 "make install prefix=/usr". It needs zlib, libssl, libcurl, and libexpat.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
29
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
30 <p>When building from source, the easy way to get the man pages is to download
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
31 the appropriate git-manpages tarball (at the same URL as the source code)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
32 and extract it into /usr/share/man. You want the man pages because "git help"
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
33 displays them.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
34
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
35 <h2>Downloading the kernel with git</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
36
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
37 <p>The following command will download the current linux-kernel repository into
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
38 a local directory called "linux-git":</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
39
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
40 <blockquote>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
41 git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-git
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
42 </blockquote>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
43
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
44 <p>This downloads a local copy of the entire revision history (back to
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
45 2.6.12-rc2), which takes a couple hundred megabytes. It extracts the most
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
46 recent version of all the files into your linux-git directory, but that's just
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
47 a snapshot (generally referred to by git people as your
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
48 "<a href=http://www.kernel.org/pub/software/scm/git/docs/glossary.html#def_working_tree>working copy</a>").
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
49 The history is actually stored in the subdirectory "linux-git/.git", and the
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
50 snapshot can be recreated from that (or changed to match any historical
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
51 version) via various git commands explained below.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
52
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
53 <p>You start with an up-to-the-minute copy of the linux kernel source, which
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
54 you can use just like an extracted tarball (ignoring the extra files in the
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
55 ".git" directory). If you're interested in history from the bitkeeper days
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
56 (before 2.6.12-rc2), that's stored in a seperate repository,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
57 "<b>git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git</b>".
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
58 (<a href=http://git.kernel.org>Here is a list of all git repositories hosted
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
59 on kernel.org</a>.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
60
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
61 <p>(If you forget the URL a git repository came from, it's in the file
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
62 ".git/FETCH_HEAD". Normally you shouldn't need to care, since git remembers
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
63 it.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
64
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
65 <h2>Updating your local copy</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
66
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
67 <p>The command "<b>git pull</b>" downloads all the changes committed to Linus's
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
68 git repository since the last time you updated your copy, and appends those
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
69 commits to your copy of the repository (in the .git subdirectory). In addition,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
70 this will automatically update the files in your working copy as appropriate.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
71 (If your working copy was set to a historical version, it won't be changed,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
72 but returning your working copy to the present after a pull will get you the
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
73 newest version.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
74
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
75 <p>Note that this copies the revision history into your local .git directory.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
76 Other git commands (log, checkout, tag, blame, etc.) don't need to talk to
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
77 the server, you can work on your laptop without an internet connection (or
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
78 with a very slow one) and still have access to the complete revision history
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
79 you've already downloaded.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
80
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
81 <h2>Looking at historical versions</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
82
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
83 <p>The <b>git log</b> command lists the changes recorded in your repository,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
84 starting with the most recent and working back. The big hexadecimal numbers
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
85 are unique identifiers (sha1sum) for each commit. If you want to specify a
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
86 commit, you only need the first few digits, enough to form a unique prefix.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
87 (Six digits should be plenty.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
88
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
89 <p>You can limit the log to a specific file or directory, which lists
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
90 only the commits changing that file/directory. Just add the file(s)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
91 you're interested in to the end of the <b>git log</b> command line.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
92
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
93 <p>The <b>git tag -l</b> command shows all the tagged releases. These
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
94 human-readable names can be used as synonyms for the appropriate commit
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
95 identifier, which is useful when doing things like checkout and diff.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
96 The special tag "<b>master</b>" points to the most recent commit.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
97
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
98 <p>The <b>git blame $FILE</b> command displays all the changes that resulted in
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
99 the current state of a file. It shows each line, prefixed with the commit
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
100 identifier which last changed that line. (If the default version of <b>git
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
101 blame</b> is difficult to read on an 80 charater terminal, try <b>git blame
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
102 $FILE | sed 's/(.*)//'</b> to see more of the file itself.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
103
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
104 <h2>Working with historical versions</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
105
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
106 <p>The <b>git checkout</b> command changes your working copy of the source to a
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
107 specific version. The -f option to checkout backs out any local changes
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
108 you've made to the files. The <b>git clean</b> command deletes any extra files
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
109 in your working directory (ones which aren't checked into the repository).
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
110 The -d option to clean deletes untracked directories as well as files.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
111
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
112 <p>So to reset your working copy of the source to a historical version, go
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
113 <b>git checkout -f $VERSION; git clean -d</b> where $VERSION is the tag or
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
114 sha1sum identifier of the version you want. If you don't specify a $VERSION,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
115 git will default to "master" which is the most recent checkout in Linus's
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
116 tree (what mercurial calls "tip" and Subversion calls HEAD), returning you
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
117 to the present and removing any uncommitted local changes.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
118
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
119 <p>Another way to undo all changes to your copy is to do "rm -rf *" in
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
120 the linux-git directory (which doesn't delete hidden files like ".git"),
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
121 followed by "git checkout -f" to grab fresh copies from the repository in
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
122 the .git subdirectory. This generally isn't necessary. Most of the time,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
123 <b>git checkout -f</b> is sufficient to reset your working copy to the most
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
124 recent version in the repository.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
125
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
126 <p>If you lose track of which version is currently checked out as your working
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
127 copy, use <b>git log</b> to see the most recent commits to the version you're
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
128 looking at, and <b>git log master</b> to compare against the most recent
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
129 commits in the repository.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
130
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
131 <h2>Using git diff</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
132
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
133 <p>The command "git diff" shows differences between git versions. You can
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
134 ask it to show differences between:</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
135 <ul>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
136 <li><b>git diff</b> - the current version checked out from the respository and all files in the working directory</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
137 <li><b>git diff v2.6.21</b> - a specific historical version and all files in the working directory</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
138 <li><b>git diff v2.6.20 v2.6.21</b> - all files in two different historial
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
139 versions</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
140 <li><b>git diff init/main.c</b> - specific locally modified files in the
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
141 working directory that don't match what was checked out from the repository</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
142 <li><b>git diff v2.6.21 init/main.c</b> - specific file(s) in a specific historical version of the repository vs those same files in the working directory.</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
143 <li><b>git diff v2.6.20 v2.6.21 init/main.c</b> - specific files in two
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
144 different historical version of the repository</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
145 </ul>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
146
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
147 <p>What git is doing is checking each argument to see if it recognizes it
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
148 as a historical version sha1sum or tag, and if it isn't it checks to see if
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
149 it's a file. If this is likely to cause confusion, you can use the magic
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
150 argument "--" to indicate that all the arguments before that are versions
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
151 and all the arguments after that are filenames.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
152
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
153 <p>The argument <b>--find-copies-harder</b> tells git diff to detect renamed or
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
154 copied files. Notice that git diff has a special syntax to indicate renamed
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
155 or copied files, which is much more concise and portable than the traditional
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
156 behavior of removing all lines from one file and adding them to another.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
157 (This behavior may become the default in a future version.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
158
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
159 <h2>Creating tarballs</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
160
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
161 <p>The <b>git archive $VERSION</b> command creates a tarball (written to
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
162 stdout) of the given version. Note that "master" isn't the default here,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
163 you have to specify that if you want the most up-to-date version.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
164 You can pipe it through bzip and write it to a file (<b>git archive master |
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
165 bzip2 > master.tar.bz2</b>) or you can use git archive to grab a clean copy
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
166 out of your local git repository and extract it into another directory, ala:</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
167
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
168 <blockquote>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
169 <pre>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
170 mkdir $COPY
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
171 git archive master | tar xCv $COPY
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
172 </pre>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
173 </blockquote>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
174
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
175 <p>You can also use the standard Linux kernel out-of-tree building
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
176 infrastructure on the git working directory, ala:</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
177
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
178 <blockquote>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
179 <pre>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
180 cd $GITDIR
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
181 make allnoconfig O=$OTHERDIR
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
182 cd $OTHERDIR
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
183 make menuconfig
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
184 make
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
185 </pre>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
186 </blockquote>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
187
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
188 <p>Finally, you can build in your git directory, and then clean it up
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
189 afterwards with <b>git checkout -f; git clean -d</b>. (Better than
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
190 "make distclean".)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
191
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
192 <h2>Bisect</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
193
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
194 <p>Possibly the most useful thing git does for non-kernel developers is
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
195 <b>git bisect</b>, which can track down a bug to a specific revision. This
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
196 is a multi-step process which binary searches through the revision history
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
197 to find a specific commit responsible for a testable change in behavior.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
198
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
199 <p>(You don't need to know this, but bisect turns out to be nontrivial to
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
200 implement in a distributed source control system, because the revision history
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
201 isn't linear. When the history branches and comes back together again, binary
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
202 searching through it requires remembering more than just a single starting and
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
203 ending point. That's why bisect works the way it does.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
204
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
205 <p>The git bisect commands are:</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
206 <ul>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
207 <li><b>git bisect start</b> - start a new bisect. This opens a new (empty)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
208 log file tracking all the known good and bad versions.</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
209 <li><b>git bisect bad $VERSION</b> - Identify a known broken version. (Leaving
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
210 $VERSION blank indicates the current version, "master".)</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
211 <li><b>git bisect good $VERSION</b> - Identify a version that was known to
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
212 work.</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
213 <li><b>git bisect log</b> - Show bisection history so far this run.</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
214 <li><b>git bisect replay $LOGFILE</b> - Reset to an earlier state using the output of git bsect log.</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
215 <li><b>git bisect reset</b> - Finished bisecting, clean up and return to
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
216 head. (If git bisect start says "won't bisect on seeked tree", you forgot
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
217 to do this last time and should do it now.)</li>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
218 </ul>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
219
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
220 <p>To track down the commit that introduced a bug via git bisect, start with
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
221 <b>git bisect reset master</b> (just to be safe), then <b>git bisect start</b>.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
222 Next identify the last version known to work (ala <b>git bisect good
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
223 v2.6.20</b>), and identify the first bad version you're aware of (if it's
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
224 still broken, use "master".)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
225
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
226 <p>After you identify one good and one bad version, git will grind for a bit
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
227 and reset the working directory state to some version in between, displaying
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
228 the version identifier it selected. Test this version (build and run your
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
229 test), then identify it as good or bad with the appropriate git bisect
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
230 command. (Just "git bisect good" or "get bisect bad", there's no need to
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
231 identify version here because it's the current version.) After each such
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
232 identification, git will grind for a bit and find another version to test,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
233 resetting the working directory state to the new version until it narrows
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
234 it down to one specific commit.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
235
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
236 <p>The biggest problem with <b>git bisect</b> is hitting a revision that
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
237 doesn't compile properly. When the build breaks, you can't determine
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
238 whether or not the current version is good or bad. This is where
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
239 <b>git bisect log</b> comes into play.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
240
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
241 <p>When in doubt, save the git bisect log output to a file
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
242 (<b>git bisect log > ../bisect.log</b>). Then make a guess
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
243 whether the commit you can't build would have shown the problem if you
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
244 could build it. If you guess wrong (hint: every revision bisect wants
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
245 to test after that comes out the opposite of your guess, all the way to the
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
246 end) do a <b>git bisect replay ../bisect.log</b> to restart from your
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
247 saved position, and guess the other way. If you realize after the fact you
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
248 need to back up, the bisect log is an easily editable text file you can
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
249 always chop a few lines off the end of.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
250
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
251 <h2>Example git bisect run</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
252
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
253 <p>Here is a real git bisect run I did on the <a href=http://qemu.org>qemu</a>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
254 git repository (git://git.kernel.dk/data/git/qemu) to figure out why
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
255 the PowerPC Linux kernel I'd built was hanging during IDE controller
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
256 intiialization under the current development version of qemu-system-ppc
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
257 (but not under older versions).</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
258
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
259 <blockquote>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
260 <pre><b>$ git bisect reset master</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
261 Already on branch "master"
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
262 <b>$ git bisect good release_0_8_1</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
263 You need to start by "git bisect start"
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
264 Do you want me to do it for you [Y/n]? y
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
265 <b>$ git bisect bad master</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
266 Bisecting: 753 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
267 [7c8ad370662b706b4f46497f532016cc7a49b83e] Embedded PowerPC Device Control Registers infrastructure.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
268 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
269 ...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
270 Unhappy :(
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
271 <b>$ git bisect bad # The test failed</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
272 Bisecting: 376 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
273 [255d4f6dd496d2d529bce38a85cc02199833f080] Simplify error handling again.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
274 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
275 WARNING: "gcc" looks like gcc 4.x
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
276 Looking for gcc 3.x
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
277 ./configure: 357: Syntax error: Bad fd number
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
278 <b>$ git bisect log > ../bisect.log # Darn it, build break. Save state and...</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
279 <b>$ git bisect good # Wild guess because I couldn't run the test.</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
280 Bisecting: 188 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
281 [16bcc6b31799ca01cd389db7cb90a345e9b68dd9] Fix wrong interrupt number for the second serial interface.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
282 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
283 ...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
284 Happy :)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
285 <b>$ git bisect good # Hey, maybe my guess was right</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
286 Bisecting: 94 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
287 [37781cc88f69e45624c1cb15321ddd2055cf74b6] Fix usb hid and mass-storage protocol revision, by Juergen Keil.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
288 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
289 ...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
290 Happy :)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
291 <b>$ git bisect good</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
292 Bisecting: 47 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
293 [30347b54b7212eba09db05317217dbc65a149e25] Documentation update
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
294 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
295 ...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
296 Happy :)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
297 <b>$ git bisect good</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
298 Bisecting: 23 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
299 [06a21b23c22ac18d04c9f676b9b70bb6ef72d7f1] Set proper BadVAddress value for unaligned instruction fetch.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
300 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
301 ...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
302 Happy :)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
303 <b>$ git bisect good</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
304 Bisecting: 11 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
305 [da77e9d7918cabed5b0725f87496a1dc28da8b8c] Fix exception handling cornercase for rdhwr.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
306 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
307 ...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
308 Happy :)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
309 <b>$ git bisect good</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
310 Bisecting: 5 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
311 [36f447f730f61ac413c5b1c4a512781f5dea0c94] Implement embedded IRQ controller for PowerPC 6xx/740 & 750.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
312 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
313 ...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
314 Unhappy :(
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
315 <b>$ git bisect bad # Oh good, I was getting worried I'd guessed wrong above...</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
316 Bisecting: 2 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
317 [d4838c6aa7442fae62b08afbf4c358200f10ec74] Proper handling of reserved bits in the context register.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
318 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
319 ...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
320 Happy :)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
321 Bisecting: 1 revisions left to test after this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
322 [a8b64e6f4c7f3c4850be5fd303bf590564264294] Fix monitor disasm output for Sparc64 target
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
323 <b>$ ./configure && make -j 2 && ~/mytest</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
324 ...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
325 Happy :)
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
326 <b>$ git bisect good</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
327 36f447f730f61ac413c5b1c4a512781f5dea0c94 is first bad commit
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
328 commit 36f447f730f61ac413c5b1c4a512781f5dea0c94
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
329 Author: j_mayer <j_mayer>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
330 Date: Mon Apr 9 22:45:36 2007 +0000
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
331
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
332 Implement embedded IRQ controller for PowerPC 6xx/740 & 750.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
333 Fix PowerPC external interrupt input handling and lowering.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
334 Fix OpenPIC output pins management.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
335 Fix multiples bugs in OpenPIC IRQ management.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
336 Fix OpenPIC CPU(s) reset function.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
337 Fix Mac99 machine to properly route OpenPIC outputs to the PowerPC input pins.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
338 Fix PREP machine to properly route i8259 output to the PowerPC external
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
339 interrupt pin.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
340
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
341 :100644 100644 0eabacd6434b8e40876581605c619513bf9ac512 284cb92ae83a2a36e05137d3532106ff85167364 M cpu-exec.c
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
342 :040000 040000 68740f5b1330c7859abfea3ce31062cb92adaa7f 5c48b0d20f1c4d3115881b5e9e5b6c1d681f4880 M hw
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
343 :040000 040000 3ad1f0d09c60d8190d98b28318519ebaaccbb569 69efc274cec1801848de9238ae71e97681978433 M target-ppc
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
344 :100644 100644 2f87946e874e8f6cbf9afd47c65e0baff236dc45 b40ff3747530d275181ff071c9cc9cff1d5ba02d M vl.h
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
345 <b>$ git bisect reset</b>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
346 </pre>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
347 </blockquote>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
348
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
349 <p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
350
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
351 <h2>Command summary</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
352
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
353 <p><b>git help</b></p> - List available commands. You can also go
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
354 <b>git help COMMANDNAME</b> to see help on a specific command. Note,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
355 this displays the man page for the appropriate command, so you need to have
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
356 the git man pages installed for it to work.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
357
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
358 <p><b>git clone git://blah/blah/blah localdir</b> - Download a repository
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
359 from the web into "localdir". Linus's current repository is at
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
360 "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git",
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
361 the old history from the bitkeeper days (before 2.6.12-rc2) is at
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
362 "git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git", and
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
363 there are lots of <a href=http;//git.kernel.org>other trees hosted on
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
364 kernel.org</a> and elsewhere.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
365
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
366 <p><b>git pull</b> - Freshen up your local copy of the repository, downloading
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
367 and merging all of Linus's changes since last time you did this. In addition
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
368 to appending lots of commits to your repository in the .git directory, this
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
369 also updates the snapshot of the files (if it isn't already pointing into
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
370 the past).</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
371
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
372 <p><b>git log</b> - List the changes recorded in your repository, starting with
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
373 the most recent and working back. Note: the big hex numbers are unique
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
374 identifiers (sha1sum) for each commit. If you want to specify a commit, you
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
375 only need a unique prefix (generally the first four digits is enough).</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
376
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
377 <p><b>git tag -l</b> - Show all the tagged releases. These human-readable
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
378 names can be used as synonyms for the appropriate commit identifier when
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
379 doing things like checkout and diff. (Note, the special tag "master"
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
380 points to the most recent commit.)</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
381
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
382 <p><b>git checkout -f; git clean -d</b> - reset your snapshot to the most recent
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
383 commit. The "checkout" command updates your snapshot to a specific version
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
384 (defaulting to the tip of the current branch). The -f argument says to back
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
385 out any local changes you've made to the files, and "clean -d" says to
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
386 delete any extra files in the snapshot that aren't checked into the
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
387 repository.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
388
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
389 <p><b>git diff</b> - Show differences between two commits, such as
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
390 "git diff v2.6.20 v2.6.21". You can also specify specific files you're
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
391 interested in, ala "git diff v2.6.20 v2.6.21 README init/main.c". If you
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
392 specify one version it'll compare your working directory against that version,
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
393 and if you specify no versions it'll compare the version you checked out
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
394 against your working directory. Anything that isn't recognized as the start of
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
395 a commit indentifying sha1sum, or a tagged release, is assumed to be a filename.
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
396 If this causes problems, you can add "--" to the command line to explicitly
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
397 specify that arguments before that (if any) are version identifiers and all the
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
398 arguments after that are filenames. Add "--find-copies-harder" to detect
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
399 renames.</p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
400
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
401 <h2>Linus Tovalds talks about git</h2>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
402
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
403 <p>In <a href=http://youtube.com/watch?v=4XpnKHJAok8>this Google Tech Talk</a></p>
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
404
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
405 <!--
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
406 "git show @{163}"... one character less...
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
407
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
408 http://www.kernel.org/pub/software/scm/git/docs/glossary.html#def_working_tree
27dcbe1b4669 The git quickstart guide I've been working on for ages.
Rob Landley <rob@landley.net>
parents:
diff changeset
409 -->