September 2009
Beginner
942 pages
85h 34m
English
As our first example, let’s clone a copy of the Linux kernel into /tmp/linux-2.6:
$cd /tmp$git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6Initialized empty Git repository in /tmp/linux-2.6/.git/ remote: Counting objects: 1177432, done. remote: Compressing objects: 100% (189064/189064), done. remote: Total 1177432 (delta 982454), reused 1176803 (delta 981879) Receiving objects: 100% (1177432/1177432), 288.00 MiB | 406 KiB/s, done. Resolving deltas: 100% (982454/982454), done. Checking out files: 100% (27842/27842), done.
Now you have a copy of the entire Linux kernel and its development history, including many different tags and branches. You’ve started out on branch master, which is the latest version. Check out the v2.6.20 tag to get an older version:
$cd linux-2.6$git checkout v2.6.20Checking out files: 100% (33554/33554), done. Note: moving to 'v2.6.20' which isn't a local branch If you want to create a new branch from this checkout, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new_branch_name> HEAD is now at 62d0cfc... Linux 2.6.20
You can’t make changes to tags, and you haven’t created a local branch for your work, so Git has given you what it calls a disconnected HEAD. You can make commits, but they won’t be attached to any branch at all. That’s a bit dangerous, since it’s easy to lose track of your work that way. Let’s name our work so ...