★果冻★的专栏

路漫漫其修远兮,吾将上下而求索.

Kernel Hackers' Guide to git

This tutorial is a cookbook of recipes getting up and running with Linus's source code management (SCM) software, "git." Its targetted mainly at Linux kernel hackers, though others may find it useful.

<script type="text/javascript"><!-- google_ad_client = "pub-0316247916390367"; google_ad_width = 120; google_ad_height = 600; google_ad_format = "120x600_as"; google_ad_type = "text_image"; google_ad_channel ="8548579839"; google_color_border = "000000"; google_color_bg = "F0F0F0"; google_color_link = "0000FF"; google_color_url = "008000"; google_color_text = "000000"; //--></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <iframe width="120" scrolling="no" height="600" frameborder="0" allowtransparency="true" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-0316247916390367&amp;dt=1190011758578&amp;lmt=1169662894&amp;format=120x600_as&amp;output=html&amp;correlator=1190011758578&amp;channel=8548579839&amp;url=http%3A%2F%2Flinux.yyz.us%2Fgit-howto.html&amp;color_bg=F0F0F0&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=000000&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fq%3Dgit%2Blinux%2B%2Bkernel%26sourceid%3Dnavclient-ff%26ie%3DUTF-8%26rlz%3D1B3GGGL_zh-CNCN238CN238&amp;cc=100&amp;ga_vid=760120697.1190011759&amp;ga_sid=1190011759&amp;ga_hid=247721911&amp;flash=9&amp;u_h=800&amp;u_w=1280&amp;u_ah=772&amp;u_aw=1280&amp;u_cd=32&amp;u_tz=480&amp;u_his=1&amp;u_java=true&amp;u_nplug=9&amp;u_nmime=28" name="google_ads_frame" style="display: none;"></iframe>

Table of Contents


Getting Started

Installing git

git requires bootstrapping, since you must have git installed in order to check out git.git (git repository), and linux-2.6.git (kernel repository). You may find that your distribution already provides a usable version of git. If so, try that first.

  • Fedora Core 3 and later: git-core package is in Fedora Extras

    yum install git-core

If your distro doesn't have a package already, you should start by downloading a daily snapshot of the git source code.

Download the latest stable release from: http://www.kernel.org/pub/software/scm/git/.

tarball build-deps: zlib, libcurl, libcrypto (openssl)

install tarball:

unpack && make && sudo make prefix=/usr/local install

After reading the rest of this document, come back and update your copy of git to the latest: git://git.kernel.org/pub/scm/git/git.git

Download a linux kernel tree for the very first time

$ git-clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6

NOTE: The kernel tree is very large. This constitutes downloading several hundred megabytes of data.


Basic Tasks

Update local kernel tree to latest 2.6.x upstream ("fast-forward merge")

$ cd linux-2.6
$ git pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

Undo all local modifications:

$ git checkout -f

Check in your own modifications (e.g. do some hacking, or apply a patch)

# go to repository
$ cd linux-2.6

# make some modifications
$ vi drivers/net/sk98lin/skdim.c

# NOTE: Run git-add and git-rm if adding or removing files.

# check in all modifications
$ git commit -a

List all changes in working dir, in diff format.

Display changes since last git-update-index:

$ git diff

Display changes since last commit:

$ git diff HEAD

Obtain summary of all changes in working dir

$ git status

List all changesets

$ git log

List all changesets belonging to a specific file

(in this case, net/ieee80211/ieee80211_module.c)
$ git-whatchanged net/ieee80211/ieee80211_module.c

Branches

List all branches

$ git branch

Make desired branch current in working directory

$ git checkout $branch

Create a new branch, and make it current

$ git checkout -b my-new-branch-name master

Examine which branch is current

$ git branch

(the branch with the asterisk '*' beside it is current)

Obtain a diff between current branch, and master branch

In most trees with branches, .git/refs/heads/master contains the current 'vanilla' upstream tree, for easy diffing and merging. (in trees without branches, 'master' simply contains your latest changes)

$ git diff master..HEAD

(this is equivalent to git diff HEAD, when used with HEAD branch)

Obtain a list of changes between current branch, and master branch

$ git log master..HEAD

(this is equivalent to git log, when used with HEAD branch)

or rather than full changeset descriptions, obtain a one-line summary of each changes:
$ git log master..HEAD | git shortlog

Merge changes from one branch into another

Let us suppose that you do work on branch A and branch B, and after work on those two branches is complete, you merge the work into mainline branch M.
$ git checkout M	# switch to branch M
$ git pull . A # merge A into M
$ git pull . B # merge B into M

Misc. Debris

Apply all patches in a Berkeley mbox-format file

First, make sure that the tools subdirectory of the git-core repository is in your PATH.

$ cd my-kernel-tree-2.6
$ git-applymbox /path/to/mbox /path/to/signoff.txt

The file /path/to/mbox is a Berkeley mbox file, containing one or more patches to be committed to the git repository. The optional file /path/to/signoff.txt is the text file that is appended to each changeset description. For the Linux kernel, this typically includes the

Signed-off-by: Your Name <your@email.com>

line that is common to almost all kernel submissions.

Don't forget to download tags from time to time.

git pull only downloads sha1-indexed object data, and the requested remote head. This misses updates to the .git/refs/tags/ and .git/refs/heads/ directories. For tags, run git pull

--tags.

 
阅读更多
个人分类: Linux
上一篇Ubuntu下安装 GetDeb 网站的软件
下一篇A tutorial introduction to git (for version 1.5.1 or newer)
想对作者说点什么? 我来说一句

the hacker guide to python

2014年11月24日 1.94MB 下载

The Linux Kernel Module Programming Guide

2011年03月06日 415KB 下载

Bayesian Methods for Hackers

2017年05月18日 11.35MB 下载

没有更多推荐了,返回首页

关闭
关闭