]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/gittutorial.txt
Merge branch 'kb/lstat-cache'
[thirdparty/git.git] / Documentation / gittutorial.txt
CommitLineData
b27a23e3
CC
1gittutorial(7)
2==============
3
4NAME
5----
6gittutorial - A tutorial introduction to git (for version 1.5.1 or newer)
7
8SYNOPSIS
9--------
10git *
11
12DESCRIPTION
13-----------
8c7fa247 14
927a503c
BF
15This tutorial explains how to import a new project into git, make
16changes to it, and share changes with other developers.
8c7fa247 17
cd50aba9
BF
18If you are instead primarily interested in using git to fetch a project,
19for example, to test the latest version, you may prefer to start with
20the first two chapters of link:user-manual.html[The Git User's Manual].
21
46e56e81 22First, note that you can get documentation for a command such as
483bc4f0 23`git log --graph` with:
8c7fa247 24
927a503c 25------------------------------------------------
3861cd55 26$ man git-log
927a503c 27------------------------------------------------
8c7fa247 28
6e702c24
CC
29or:
30
31------------------------------------------------
32$ git help log
33------------------------------------------------
34
35With the latter, you can use the manual viewer of your choice; see
36linkgit:git-help[1] for more information.
37
c14261ea
NP
38It is a good idea to introduce yourself to git with your name and
39public email address before doing any operation. The easiest
40way to do so is:
66589230
JH
41
42------------------------------------------------
e0d10e1c
TP
43$ git config --global user.name "Your Name Comes Here"
44$ git config --global user.email you@yourdomain.example.com
66589230
JH
45------------------------------------------------
46
47
927a503c
BF
48Importing a new project
49-----------------------
8c7fa247 50
927a503c
BF
51Assume you have a tarball project.tar.gz with your initial work. You
52can place it under git revision control as follows.
8c7fa247 53
8db9307c 54------------------------------------------------
dcc6e28f 55$ tar xzf project.tar.gz
927a503c 56$ cd project
515377ea 57$ git init
8db9307c 58------------------------------------------------
8c7fa247 59
927a503c 60Git will reply
8c7fa247 61
927a503c 62------------------------------------------------
ef0a89a6 63Initialized empty Git repository in .git/
927a503c 64------------------------------------------------
8c7fa247 65
927a503c 66You've now initialized the working directory--you may notice a new
93f9cc67
BF
67directory created, named ".git".
68
69Next, tell git to take a snapshot of the contents of all files under the
ba020ef5 70current directory (note the '.'), with 'git-add':
8c7fa247 71
8db9307c 72------------------------------------------------
927a503c 73$ git add .
8db9307c 74------------------------------------------------
8c7fa247 75
93f9cc67
BF
76This snapshot is now stored in a temporary staging area which git calls
77the "index". You can permanently store the contents of the index in the
ba020ef5 78repository with 'git-commit':
8c7fa247 79
927a503c 80------------------------------------------------
66589230 81$ git commit
927a503c 82------------------------------------------------
8c7fa247 83
93f9cc67
BF
84This will prompt you for a commit message. You've now stored the first
85version of your project in git.
8c7fa247 86
84dee6bb
BF
87Making changes
88--------------
89
93f9cc67 90Modify some files, then add their updated contents to the index:
8c7fa247 91
8db9307c 92------------------------------------------------
93f9cc67 93$ git add file1 file2 file3
8db9307c 94------------------------------------------------
8c7fa247 95
93f9cc67 96You are now ready to commit. You can see what is about to be committed
ba020ef5 97using 'git-diff' with the --cached option:
93f9cc67
BF
98
99------------------------------------------------
100$ git diff --cached
101------------------------------------------------
102
ba020ef5 103(Without --cached, 'git-diff' will show you any changes that
93f9cc67 104you've made but not yet added to the index.) You can also get a brief
ba020ef5 105summary of the situation with 'git-status':
93f9cc67
BF
106
107------------------------------------------------
108$ git status
109# On branch master
110# Changes to be committed:
111# (use "git reset HEAD <file>..." to unstage)
112#
113# modified: file1
114# modified: file2
115# modified: file3
116#
117------------------------------------------------
118
119If you need to make any further adjustments, do so now, and then add any
120newly modified content to the index. Finally, commit your changes with:
8c7fa247 121
927a503c 122------------------------------------------------
c1d179f8 123$ git commit
927a503c 124------------------------------------------------
f2416c27 125
2feaf4e9 126This will again prompt you for a message describing the change, and then
93f9cc67 127record a new version of the project.
84dee6bb 128
ba020ef5 129Alternatively, instead of running 'git-add' beforehand, you can use
66589230
JH
130
131------------------------------------------------
132$ git commit -a
133------------------------------------------------
8c7fa247 134
93f9cc67
BF
135which will automatically notice any modified (but not new) files, add
136them to the index, and commit, all in one step.
84dee6bb 137
927a503c
BF
138A note on commit messages: Though not required, it's a good idea to
139begin the commit message with a single short (less than 50 character)
140line summarizing the change, followed by a blank line and then a more
141thorough description. Tools that turn commits into email, for
c1d179f8 142example, use the first line on the Subject: line and the rest of the
927a503c 143commit in the body.
8c7fa247 144
366bfcb6
NP
145Git tracks content not files
146----------------------------
147
483bc4f0
JN
148Many revision control systems provide an `add` command that tells the
149system to start tracking changes to a new file. Git's `add` command
ba020ef5 150does something simpler and more powerful: 'git-add' is used both for new
93f9cc67
BF
151and newly modified files, and in both cases it takes a snapshot of the
152given files and stages that content in the index, ready for inclusion in
153the next commit.
8c7fa247 154
23c9ccb2
BF
155Viewing project history
156-----------------------
8c7fa247 157
927a503c 158At any point you can view the history of your changes using
8c7fa247 159
927a503c 160------------------------------------------------
67e6e5c4 161$ git log
927a503c 162------------------------------------------------
8c7fa247 163
927a503c 164If you also want to see complete diffs at each step, use
8c7fa247 165
927a503c 166------------------------------------------------
67e6e5c4 167$ git log -p
927a503c 168------------------------------------------------
8c7fa247 169
c1d179f8
JH
170Often the overview of the change is useful to get a feel of
171each step
172
173------------------------------------------------
174$ git log --stat --summary
175------------------------------------------------
176
927a503c
BF
177Managing branches
178-----------------
2a29da7c 179
927a503c
BF
180A single git repository can maintain multiple branches of
181development. To create a new branch named "experimental", use
8c7fa247 182
927a503c
BF
183------------------------------------------------
184$ git branch experimental
185------------------------------------------------
8c7fa247 186
927a503c 187If you now run
8c7fa247 188
927a503c
BF
189------------------------------------------------
190$ git branch
191------------------------------------------------
8c7fa247 192
927a503c 193you'll get a list of all existing branches:
8c7fa247 194
8db9307c 195------------------------------------------------
927a503c
BF
196 experimental
197* master
8db9307c 198------------------------------------------------
8c7fa247 199
927a503c
BF
200The "experimental" branch is the one you just created, and the
201"master" branch is a default branch that was created for you
202automatically. The asterisk marks the branch you are currently on;
203type
8c7fa247 204
927a503c
BF
205------------------------------------------------
206$ git checkout experimental
207------------------------------------------------
8c7fa247 208
927a503c
BF
209to switch to the experimental branch. Now edit a file, commit the
210change, and switch back to the master branch:
8c7fa247 211
927a503c
BF
212------------------------------------------------
213(edit file)
214$ git commit -a
215$ git checkout master
216------------------------------------------------
8c7fa247 217
927a503c
BF
218Check that the change you made is no longer visible, since it was
219made on the experimental branch and you're back on the master branch.
8c7fa247 220
927a503c 221You can make a different change on the master branch:
8c7fa247 222
927a503c
BF
223------------------------------------------------
224(edit file)
225$ git commit -a
226------------------------------------------------
8c7fa247 227
927a503c 228at this point the two branches have diverged, with different changes
59427063 229made in each. To merge the changes made in experimental into master, run
ed616049 230
927a503c 231------------------------------------------------
c14261ea 232$ git merge experimental
927a503c
BF
233------------------------------------------------
234
235If the changes don't conflict, you're done. If there are conflicts,
236markers will be left in the problematic files showing the conflict;
8c7fa247 237
8db9307c 238------------------------------------------------
927a503c 239$ git diff
8db9307c 240------------------------------------------------
8c7fa247 241
927a503c
BF
242will show this. Once you've edited the files to resolve the
243conflicts,
8c7fa247 244
8db9307c 245------------------------------------------------
927a503c 246$ git commit -a
8db9307c 247------------------------------------------------
8c7fa247 248
927a503c 249will commit the result of the merge. Finally,
8c7fa247 250
8db9307c 251------------------------------------------------
927a503c 252$ gitk
8db9307c 253------------------------------------------------
8c7fa247 254
927a503c 255will show a nice graphical representation of the resulting history.
8c7fa247 256
9c9410e1
SB
257At this point you could delete the experimental branch with
258
259------------------------------------------------
260$ git branch -d experimental
261------------------------------------------------
262
263This command ensures that the changes in the experimental branch are
264already in the current branch.
265
927a503c
BF
266If you develop on a branch crazy-idea, then regret it, you can always
267delete the branch with
8c7fa247 268
927a503c
BF
269-------------------------------------
270$ git branch -D crazy-idea
271-------------------------------------
8c7fa247 272
927a503c
BF
273Branches are cheap and easy, so this is a good way to try something
274out.
8c7fa247 275
927a503c
BF
276Using git for collaboration
277---------------------------
3eb5128a 278
927a503c
BF
279Suppose that Alice has started a new project with a git repository in
280/home/alice/project, and that Bob, who has a home directory on the
281same machine, wants to contribute.
3eb5128a 282
927a503c 283Bob begins with:
3eb5128a 284
8db9307c 285------------------------------------------------
5d5e88af 286bob$ git clone /home/alice/project myrepo
8db9307c 287------------------------------------------------
3eb5128a 288
927a503c
BF
289This creates a new directory "myrepo" containing a clone of Alice's
290repository. The clone is on an equal footing with the original
abda1ef5 291project, possessing its own copy of the original project's history.
927a503c
BF
292
293Bob then makes some changes and commits them:
ed616049 294
927a503c
BF
295------------------------------------------------
296(edit files)
5d5e88af 297bob$ git commit -a
927a503c
BF
298(repeat as necessary)
299------------------------------------------------
ed616049 300
927a503c
BF
301When he's ready, he tells Alice to pull changes from the repository
302at /home/bob/myrepo. She does this with:
ed616049 303
927a503c 304------------------------------------------------
5d5e88af
IK
305alice$ cd /home/alice/project
306alice$ git pull /home/bob/myrepo master
927a503c 307------------------------------------------------
ed616049 308
c1ff284a 309This merges the changes from Bob's "master" branch into Alice's
93ee7823
BF
310current branch. If Alice has made her own changes in the meantime,
311then she may need to manually fix any conflicts. (Note that the
312"master" argument in the above command is actually unnecessary, as it
313is the default.)
2ae6c706 314
93ee7823
BF
315The "pull" command thus performs two operations: it fetches changes
316from a remote branch, then merges them into the current branch.
2ae6c706 317
dc29bc8b
JH
318Note that in general, Alice would want her local changes committed before
319initiating this "pull". If Bob's work conflicts with what Alice did since
320their histories forked, Alice will use her working tree and the index to
321resolve conflicts, and existing local changes will interfere with the
322conflict resolution process (git will still perform the fetch but will
323refuse to merge --- Alice will have to get rid of her local changes in
324some way and pull again when this happens).
325
326Alice can peek at what Bob did without merging first, using the "fetch"
327command; this allows Alice to inspect what Bob did, using a special
328symbol "FETCH_HEAD", in order to determine if he has anything worth
329pulling, like this:
330
331------------------------------------------------
332alice$ git fetch /home/bob/myrepo master
53d1589f 333alice$ git log -p HEAD..FETCH_HEAD
dc29bc8b
JH
334------------------------------------------------
335
336This operation is safe even if Alice has uncommitted local changes.
53d1589f
PC
337The range notation HEAD..FETCH_HEAD" means "show everything that is reachable
338from the FETCH_HEAD but exclude anything that is reachable from HEAD.
339Alice already knows everything that leads to her current state (HEAD),
340and reviewing what Bob has in his state (FETCH_HEAD) that she has not
341seen with this command
342
343If Alice wants to visualize what Bob did since their histories forked
344she can issue the following command:
345
346------------------------------------------------
347$ gitk HEAD..FETCH_HEAD
348------------------------------------------------
349
350This uses the same two-dot range notation we saw earlier with 'git log'.
351
352Alice may want to view what both of them did since they forked.
353She can use three-dot form instead of the two-dot form:
354
355------------------------------------------------
356$ gitk HEAD...FETCH_HEAD
357------------------------------------------------
358
359This means "show everything that is reachable from either one, but
360exclude anything that is reachable from both of them".
361
362Please note that these range notation can be used with both gitk
363and "git log".
dc29bc8b
JH
364
365After inspecting what Bob did, if there is nothing urgent, Alice may
366decide to continue working without pulling from Bob. If Bob's history
367does have something Alice would immediately need, Alice may choose to
368stash her work-in-progress first, do a "pull", and then finally unstash
369her work-in-progress on top of the resulting history.
370
c1ff284a
JH
371When you are working in a small closely knit group, it is not
372unusual to interact with the same repository over and over
373again. By defining 'remote' repository shorthand, you can make
374it easier:
375
376------------------------------------------------
5d5e88af 377alice$ git remote add bob /home/bob/myrepo
c1ff284a
JH
378------------------------------------------------
379
dc29bc8b 380With this, Alice can perform the first part of the "pull" operation alone using the
ba020ef5 381'git-fetch' command without merging them with her own branch,
c1ff284a 382using:
2a29da7c 383
927a503c 384-------------------------------------
5d5e88af 385alice$ git fetch bob
927a503c 386-------------------------------------
2a29da7c 387
c1ff284a 388Unlike the longhand form, when Alice fetches from Bob using a
ba020ef5 389remote repository shorthand set up with 'git-remote', what was
c1ff284a
JH
390fetched is stored in a remote tracking branch, in this case
391`bob/master`. So after this:
a7333f9e 392
927a503c 393-------------------------------------
5d5e88af 394alice$ git log -p master..bob/master
927a503c 395-------------------------------------
a7333f9e 396
927a503c
BF
397shows a list of all the changes that Bob made since he branched from
398Alice's master branch.
a7333f9e 399
c1ff284a 400After examining those changes, Alice
c14261ea 401could merge the changes into her master branch:
ed616049 402
927a503c 403-------------------------------------
5d5e88af 404alice$ git merge bob/master
927a503c 405-------------------------------------
ed616049 406
c1ff284a
JH
407This `merge` can also be done by 'pulling from her own remote
408tracking branch', like this:
93ee7823
BF
409
410-------------------------------------
5d5e88af 411alice$ git pull . remotes/bob/master
93ee7823
BF
412-------------------------------------
413
c1ff284a 414Note that git pull always merges into the current branch,
02783075 415regardless of what else is given on the command line.
93ee7823 416
927a503c 417Later, Bob can update his repo with Alice's latest changes using
ed616049 418
927a503c 419-------------------------------------
5d5e88af 420bob$ git pull
927a503c 421-------------------------------------
ed616049 422
927a503c
BF
423Note that he doesn't need to give the path to Alice's repository;
424when Bob cloned Alice's repository, git stored the location of her
d66409f0
BF
425repository in the repository configuration, and that location is
426used for pulls:
2a29da7c 427
927a503c 428-------------------------------------
5d5e88af 429bob$ git config --get remote.origin.url
8960b5a7 430/home/alice/project
927a503c 431-------------------------------------
2a29da7c 432
ba020ef5 433(The complete configuration created by 'git-clone' is visible using
483bc4f0 434`git config -l`, and the linkgit:git-config[1] man page
d66409f0
BF
435explains the meaning of each option.)
436
437Git also keeps a pristine copy of Alice's master branch under the
438name "origin/master":
439
440-------------------------------------
5d5e88af 441bob$ git branch -r
d66409f0
BF
442 origin/master
443-------------------------------------
2a29da7c 444
927a503c
BF
445If Bob later decides to work from a different host, he can still
446perform clones and pulls using the ssh protocol:
2a29da7c 447
927a503c 448-------------------------------------
5d5e88af 449bob$ git clone alice.org:/home/alice/project myrepo
927a503c 450-------------------------------------
2a29da7c 451
927a503c 452Alternatively, git has a native protocol, or can use rsync or http;
5162e697 453see linkgit:git-pull[1] for details.
0c04094b 454
927a503c 455Git can also be used in a CVS-like mode, with a central repository
5162e697 456that various users push changes to; see linkgit:git-push[1] and
6998e4db 457linkgit:gitcvs-migration[7].
0c04094b 458
f1fe3846
BF
459Exploring history
460-----------------
0c04094b 461
f1fe3846 462Git history is represented as a series of interrelated commits. We
ba020ef5 463have already seen that the 'git-log' command can list those commits.
f1fe3846
BF
464Note that first line of each git log entry also gives a name for the
465commit:
c9517341 466
927a503c 467-------------------------------------
f1fe3846
BF
468$ git log
469commit c82a22c39cbc32576f64f5c6b3f24b99ea8149c7
470Author: Junio C Hamano <junkio@cox.net>
471Date: Tue May 16 17:18:22 2006 -0700
472
473 merge-base: Clarify the comments on post processing.
927a503c 474-------------------------------------
0c04094b 475
ba020ef5 476We can give this name to 'git-show' to see the details about this
f1fe3846 477commit.
0c04094b 478
927a503c 479-------------------------------------
f1fe3846 480$ git show c82a22c39cbc32576f64f5c6b3f24b99ea8149c7
927a503c 481-------------------------------------
0c04094b 482
c1d179f8 483But there are other ways to refer to commits. You can use any initial
f1fe3846 484part of the name that is long enough to uniquely identify the commit:
0c04094b 485
f1fe3846
BF
486-------------------------------------
487$ git show c82a22c39c # the first few characters of the name are
488 # usually enough
489$ git show HEAD # the tip of the current branch
490$ git show experimental # the tip of the "experimental" branch
491-------------------------------------
492
9c9410e1
SB
493Every commit usually has one "parent" commit
494which points to the previous state of the project:
0c04094b 495
927a503c 496-------------------------------------
f1fe3846
BF
497$ git show HEAD^ # to see the parent of HEAD
498$ git show HEAD^^ # to see the grandparent of HEAD
499$ git show HEAD~4 # to see the great-great grandparent of HEAD
927a503c 500-------------------------------------
e7c1ca42 501
f1fe3846
BF
502Note that merge commits may have more than one parent:
503
504-------------------------------------
505$ git show HEAD^1 # show the first parent of HEAD (same as HEAD^)
506$ git show HEAD^2 # show the second parent of HEAD
507-------------------------------------
44760f1d 508
f1fe3846 509You can also give commits names of your own; after running
3eb5128a 510
927a503c 511-------------------------------------
b1889c36 512$ git tag v2.5 1b2e1d63ff
927a503c 513-------------------------------------
3eb5128a 514
f1fe3846
BF
515you can refer to 1b2e1d63ff by the name "v2.5". If you intend to
516share this name with other people (for example, to identify a release
517version), you should create a "tag" object, and perhaps sign it; see
5162e697 518linkgit:git-tag[1] for details.
f1fe3846
BF
519
520Any git command that needs to know a commit can take any of these
521names. For example:
3eb5128a 522
927a503c 523-------------------------------------
f1fe3846
BF
524$ git diff v2.5 HEAD # compare the current HEAD to v2.5
525$ git branch stable v2.5 # start a new branch named "stable" based
526 # at v2.5
527$ git reset --hard HEAD^ # reset your current branch and working
37425065 528 # directory to its state at HEAD^
927a503c 529-------------------------------------
c9517341 530
f1fe3846
BF
531Be careful with that last command: in addition to losing any changes
532in the working directory, it will also remove all later commits from
533this branch. If this branch is the only branch containing those
ba020ef5 534commits, they will be lost. Also, don't use 'git-reset' on a
a9d1836b
JH
535publicly-visible branch that other developers pull from, as it will
536force needless merges on other developers to clean up the history.
ba020ef5 537If you need to undo changes that you have pushed, use 'git-revert'
6e2e1cfb 538instead.
c9517341 539
ba020ef5 540The 'git-grep' command can search for strings in any version of your
f1fe3846 541project, so
c9517341 542
927a503c 543-------------------------------------
f1fe3846 544$ git grep "hello" v2.5
927a503c 545-------------------------------------
c9517341 546
abda1ef5 547searches for all occurrences of "hello" in v2.5.
2a29da7c 548
ba020ef5 549If you leave out the commit name, 'git-grep' will search any of the
f1fe3846 550files it manages in your current directory. So
2a29da7c 551
927a503c 552-------------------------------------
f1fe3846 553$ git grep "hello"
dc5f9239
JH
554-------------------------------------
555
f1fe3846 556is a quick way to search just the files that are tracked by git.
927a503c 557
f1fe3846 558Many git commands also take sets of commits, which can be specified
ba020ef5 559in a number of ways. Here are some examples with 'git-log':
927a503c
BF
560
561-------------------------------------
f1fe3846
BF
562$ git log v2.5..v2.6 # commits between v2.5 and v2.6
563$ git log v2.5.. # commits since v2.5
564$ git log --since="2 weeks ago" # commits from the last 2 weeks
565$ git log v2.5.. Makefile # commits since v2.5 which modify
566 # Makefile
927a503c 567-------------------------------------
6f60300b 568
ba020ef5 569You can also give 'git-log' a "range" of commits where the first is not
f1fe3846
BF
570necessarily an ancestor of the second; for example, if the tips of
571the branches "stable-release" and "master" diverged from a common
572commit some time ago, then
573
574-------------------------------------
575$ git log stable..experimental
576-------------------------------------
577
578will list commits made in the experimental branch but not in the
579stable branch, while
580
581-------------------------------------
582$ git log experimental..stable
583-------------------------------------
584
585will show the list of commits made on the stable branch but not
586the experimental branch.
587
ba020ef5 588The 'git-log' command has a weakness: it must present commits in a
f1fe3846 589list. When the history has lines of development that diverged and
ba020ef5 590then merged back together, the order in which 'git-log' presents
f1fe3846
BF
591those commits is meaningless.
592
c7719fbe 593Most projects with multiple contributors (such as the Linux kernel,
42d36bb8 594or git itself) have frequent merges, and 'gitk' does a better job of
f1fe3846
BF
595visualizing their history. For example,
596
597-------------------------------------
598$ gitk --since="2 weeks ago" drivers/
599-------------------------------------
600
601allows you to browse any commits from the last 2 weeks of commits
2be1bc48
BF
602that modified files under the "drivers" directory. (Note: you can
603adjust gitk's fonts by holding down the control key while pressing
604"-" or "+".)
f1fe3846
BF
605
606Finally, most commands that take filenames will optionally allow you
607to precede any filename by a commit, to specify a particular version
38573864 608of the file:
f1fe3846
BF
609
610-------------------------------------
611$ git diff v2.5:Makefile HEAD:Makefile.in
612-------------------------------------
927a503c 613
ba020ef5 614You can also use 'git-show' to see any such file:
38573864
BF
615
616-------------------------------------
9c9410e1 617$ git show v2.5:Makefile
38573864
BF
618-------------------------------------
619
927a503c
BF
620Next Steps
621----------
622
e31952da
BF
623This tutorial should be enough to perform basic distributed revision
624control for your projects. However, to fully understand the depth
625and power of git you need to understand two simple ideas on which it
626is based:
627
628 * The object database is the rather elegant system used to
629 store the history of your project--files, directories, and
630 commits.
631
632 * The index file is a cache of the state of a directory tree,
633 used to create commits, check out working directories, and
634 hold the various trees involved in a merge.
635
6998e4db 636Part two of this tutorial explains the object
e31952da 637database, the index file, and a few other odds and ends that you'll
6998e4db 638need to make the most of git. You can find it at linkgit:gittutorial-2[7].
e31952da 639
cd50aba9 640If you don't want to continue with that right away, a few other
e31952da 641digressions that may be interesting at this point are:
927a503c 642
5162e697 643 * linkgit:git-format-patch[1], linkgit:git-am[1]: These convert
927a503c 644 series of git commits into emailed patches, and vice versa,
c7719fbe 645 useful for projects such as the Linux kernel which rely heavily
927a503c
BF
646 on emailed patches.
647
5162e697 648 * linkgit:git-bisect[1]: When there is a regression in your
927a503c
BF
649 project, one way to track down the bug is by searching through
650 the history to find the exact commit that's to blame. Git bisect
651 can help you perform a binary search for that commit. It is
652 smart enough to perform a close-to-optimal search even in the
653 case of complex non-linear history with lots of merged branches.
654
abda1ef5 655 * link:everyday.html[Everyday GIT with 20 Commands Or So]
e31952da 656
6998e4db 657 * linkgit:gitcvs-migration[7]: Git for CVS users.
b27a23e3
CC
658
659SEE ALSO
660--------
661linkgit:gittutorial-2[7],
662linkgit:gitcvs-migration[7],
497c8331
CC
663linkgit:gitcore-tutorial[7],
664linkgit:gitglossary[7],
6e702c24 665linkgit:git-help[1],
b27a23e3
CC
666link:everyday.html[Everyday git],
667link:user-manual.html[The Git User's Manual]
668
669GIT
670---
9e1f0a85 671Part of the linkgit:git[1] suite.