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

Linux kernel  的官方 GIT地址是:

http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git

可以从这个地址拿到 kernel 的 代码仓库。

1. 拿代码仓库

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

2. 查看状态:

$ git status
# On branch master
nothing to commit (working directory clean)

3. 更新本地的代码:

$ git pull
Already up-to-date.

4. 切换到分支:

$ git checkout linux-3.10.y 
Checking out files: 100% (25952/25952), done.
Switched to branch 'linux-3.10.y'
5. 查看分支信息:

$ git branch  
* linux-3.10.y
  master
$ git branch  -a
* linux-3.10.y
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/linux-2.6.11.y
  remotes/origin/linux-2.6.12.y
  remotes/origin/linux-2.6.13.y
  remotes/origin/linux-2.6.14.y
  remotes/origin/linux-2.6.15.y
  remotes/origin/linux-2.6.16.y
  remotes/origin/linux-2.6.17.y
  remotes/origin/linux-2.6.18.y
  remotes/origin/linux-2.6.19.y
  remotes/origin/linux-2.6.20.y
  remotes/origin/linux-2.6.21.y
  remotes/origin/linux-2.6.22.y
  remotes/origin/linux-2.6.23.y
  remotes/origin/linux-2.6.24.y
  remotes/origin/linux-2.6.25.y
  remotes/origin/linux-2.6.26.y
  remotes/origin/linux-2.6.27.y
  remotes/origin/linux-2.6.28.y
  remotes/origin/linux-2.6.29.y
  remotes/origin/linux-2.6.30.y
  remotes/origin/linux-2.6.31.y
  remotes/origin/linux-2.6.32.y
  remotes/origin/linux-2.6.33.y
  remotes/origin/linux-2.6.34.y
  remotes/origin/linux-2.6.35.y
  remotes/origin/linux-2.6.36.y
  remotes/origin/linux-2.6.37.y
  remotes/origin/linux-2.6.38.y
  remotes/origin/linux-2.6.39.y
  remotes/origin/linux-3.0.y
  remotes/origin/linux-3.1.y
  remotes/origin/linux-3.10.y
  remotes/origin/linux-3.11.y
  remotes/origin/linux-3.12.y
  remotes/origin/linux-3.13.y
  remotes/origin/linux-3.14.y
  remotes/origin/linux-3.2.y
  remotes/origin/linux-3.3.y
  remotes/origin/linux-3.4.y
  remotes/origin/linux-3.5.y
  remotes/origin/linux-3.6.y
  remotes/origin/linux-3.7.y
  remotes/origin/linux-3.8.y
  remotes/origin/linux-3.9.y
  remotes/origin/master

6. 创建一个新分支:

$ git checkout -b linux-3.10-charles 
Switched to a new branch 'linux-3.10-charles'
$ git branch 
* linux-3.10-charles
  linux-3.10.y
  master
7. 修改文件 init/main.c, 加入一行注释,然后 执行

git add .
$ git status
# On branch linux-3.10-charles
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	modified:   init/main.c
#

e$ git add -i
           staged     unstaged path
  1:        +2/-0      nothing init/main.c

*** Commands ***
  1: [s]tatus	  2: [u]pdate	  3: [r]evert	  4: [a]dd untracked
  5: [p]atch	  6: [d]iff	  7: [q]uit	  8: [h]elp
What now> 

如果选择  revert 命令,相当于 undo  "git add .":

What now> r
           staged     unstaged path
  1:        +2/-0      nothing [i]nit/main.c
Revert>> 
reverted one path

*** Commands ***
  1: [s]tatus	  2: [u]pdate	  3: [r]evert	  4: [a]dd untracked
  5: [p]atch	  6: [d]iff	  7: [q]uit	  8: [h]elp
What now> q
这个时候再执行 git status:

$ git status
# On branch linux-3.10-charles
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   init/main.c
#
no changes added to commit (use "git add" and/or "git commit -a")

8. 提交修改:

$ git commit -a -m "This is just for testing git"
[linux-3.10-charles 9eabb78] This is just for testing git
 1 file changed, 1 insertion(+), 1 deletion(-)
9. 查看修改记录(git log):

commit 9eabb788b5c33efed589b1263aedd69b97e592ac
Author: Taotao Ding <htdkd@hotmail.com>
Date:   Wed May 7 03:36:55 2014 +0900

    This is just for testing git

commit 5d897eedc505bb8af1f4865ae381eadbfd3bc8c1
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue May 6 07:56:24 2014 -0700

    Linux 3.10.39

commit 6b32172a1d3cffa74067ced96612bd13658d4fcf
Author: Felipe Balbi <balbi@ti.com>
Date:   Tue Feb 25 10:58:43 2014 -0600

    usb: musb: avoid NULL pointer dereference
    
可以看到,修改已经被记录起来了。

git log  -p
commit 9eabb788b5c33efed589b1263aedd69b97e592ac
Author: Taotao Ding <htdkd@hotmail.com>
Date:   Wed May 7 03:36:55 2014 +0900

    This is just for testing git

diff --git a/init/main.c b/init/main.c
index e83ac04..febc1e9 100644
--- a/init/main.c
+++ b/init/main.c
@@ -10,7 +10,7 @@
  */
 
 #define DEBUG          /* Enable initcall_debug */
-
+/* This is a test line for git */
 #include <linux/types.h>
 #include <linux/module.h>
 #include <linux/proc_fs.h>

10: 查看一个文件最近的修改记录:

$ git log master..HEAD init/main.c
commit 9eabb788b5c33efed589b1263aedd69b97e592ac
Author: Taotao Ding <htdkd@hotmail.com>
Date:   Wed May 7 03:36:55 2014 +0900

    This is just for testing git

commit b7a52f5111bc53ffbfff96330621cbde80df6ba4
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Tue Sep 10 10:52:35 2013 -0400

    random: run random_int_secret_init() run after all late_initcalls
    
    commit 47d06e532e95b71c0db3839ebdef3fe8812fca2c upstream.
    
    The some platforms (e.g., ARM) initializes their clocks as
    late_initcalls for some unknown reason.  So make sure
    random_int_secret_init() is run after all of the late_initcalls are
    run.
    
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

11: 比较两个分支的差异:

$ git log linux-3.10.y..linux-3.10-charles 
commit 9eabb788b5c33efed589b1263aedd69b97e592ac
Author: Taotao Ding <htdkd@hotmail.com>
Date:   Wed May 7 03:36:55 2014 +0900

    This is just for testing git

当前分支也可写成  HEAD,所以:

$ git log linux-3.10.y..HEAD
commit 9eabb788b5c33efed589b1263aedd69b97e592ac
Author: Taotao Ding <htdkd@hotmail.com>
Date:   Wed May 7 03:36:55 2014 +0900

    This is just for testing git

reference:

http://www.opensourceforu.com/2011/05/linux-kernel-development-using-git/


P.S.

配置 username  和 user.email 的方法:

 git config    user.email "username"

git config   user.email "email@server"

这两个命令改变 .git/config 配置文件 (local)

 git config  --global   user.email "username"

git config   --global user.email "email@server"

git config --global core.editor "vim"
则改变全局的 git 配置文件  (~/.gitconfig)


  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值