Kernel Hackers' Guide to git

转载 2007年09月17日 15:34:00

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.

 

使用 GIT 获得Linux Kernel的代码并查看,追踪历史记录

Linux kernel  的官方 GIT地址是: http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git 可以从这...
  • CaspianSea
  • CaspianSea
  • 2014年05月07日 02:55
  • 11179

Linux内核生成版本号的一些研究

真正在工作接触内核,其实仅仅是一年前的事情。在使用git管理代码时,发现编译出来的版本会自动带个加号“+”,或者带有“dirty”字样,当时查了些资料解决了。现在隔了那么久,觉得还是有必要写点笔记出来...
  • subfate
  • subfate
  • 2015年03月28日 08:39
  • 1309

Road Hackers:自动驾驶平台

数据 原理 开放平台数据10000公里数据,涉及很多数据,自定位、决策、路况分析、POI 和高精地图。一是全景图片数据,二是汽车姿态数据。 关于图片数据,地图采集车采集到的是360度全景数据,但考虑到...
  • c602273091
  • c602273091
  • 2017年01月11日 16:27
  • 1080

kernel hacker’s guide to git

from :http://linux.yyz.us/git-howto.html This tutorial is a cookbook of recipes getting up and runn...
  • lengyuex
  • lengyuex
  • 2011年03月27日 15:59
  • 696

ZZ:Jem's Guide: How to compile and install a new Linux kernel Configure, build, and install

DISCLAIMER: USE AT YOUR OWN RISK. EVERY COMPUTER SYSTEM IS DIFFERENT, AND WHAT WORKED FOR ME MAY NOT...
  • d344498093
  • d344498093
  • 2012年06月20日 16:41
  • 281

Unreliable Guide To Hacking The Linux Kernel

  • 2012年08月23日 10:01
  • 251KB
  • 下载

Guide to the implementation of SCSI in Linux 2.6.X kernel

  • 2007年08月28日 05:12
  • 321KB
  • 下载

Pragmatic Guide to Git

  • 2011年04月08日 08:30
  • 3.01MB
  • 下载

The Linux Kernel Module Programming Guide

The Linux Kernel Module Programming Guide Peter Jay Salzman Michael Burian Ori Pomerantz Cop...
  • wdzxl198
  • wdzxl198
  • 2013年05月02日 15:13
  • 1895

Simple Guide for Porting Android Kernel

Simple Guide for Porting Android Kernel 移植Android的kernel到实际的硬件平台上,很多人很早就做过这件事了,不过相关的文档和经验总结不多,我就写一个...
  • myspor
  • myspor
  • 2011年03月30日 20:17
  • 304
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Kernel Hackers' Guide to git
举报原因:
原因补充:

(最多只允许输入30个字)