首页 > 系统服务 > 详细

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

时间:2015-11-04 23:01:45      阅读:379      评论:0      收藏:0      [点我收藏+]

Linux kernel  的官方 GIT地址是:

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

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

1. 拿代码仓库

 

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


2. 查看状态:

 

 

  1. $ git status  
  2. # On branch master  
  3. nothing to commit (working directory clean)  


3. 更新本地的代码:

 

 

  1. $ git pull  
  2. Already up-to-date.  


4. 切换到分支:

 

 

  1. $ git checkout linux-3.10.y   
  2. Checking out files: 100% (25952/25952), done.  
  3. Switched to branch ‘linux-3.10.y‘  

5. 查看分支信息:

 

 

  1. $ git branch    
  2. * linux-3.10.y  
  3.   master  
  1. $ git branch  -a  
  2. * linux-3.10.y  
  3.   master  
  4.   remotes/origin/HEAD -> origin/master  
  5.   remotes/origin/linux-2.6.11.y  
  6.   remotes/origin/linux-2.6.12.y  
  7.   remotes/origin/linux-2.6.13.y  
  8.   remotes/origin/linux-2.6.14.y  
  9.   remotes/origin/linux-2.6.15.y  
  10.   remotes/origin/linux-2.6.16.y  
  11.   remotes/origin/linux-2.6.17.y  
  12.   remotes/origin/linux-2.6.18.y  
  13.   remotes/origin/linux-2.6.19.y  
  14.   remotes/origin/linux-2.6.20.y  
  15.   remotes/origin/linux-2.6.21.y  
  16.   remotes/origin/linux-2.6.22.y  
  17.   remotes/origin/linux-2.6.23.y  
  18.   remotes/origin/linux-2.6.24.y  
  19.   remotes/origin/linux-2.6.25.y  
  20.   remotes/origin/linux-2.6.26.y  
  21.   remotes/origin/linux-2.6.27.y  
  22.   remotes/origin/linux-2.6.28.y  
  23.   remotes/origin/linux-2.6.29.y  
  24.   remotes/origin/linux-2.6.30.y  
  25.   remotes/origin/linux-2.6.31.y  
  26.   remotes/origin/linux-2.6.32.y  
  27.   remotes/origin/linux-2.6.33.y  
  28.   remotes/origin/linux-2.6.34.y  
  29.   remotes/origin/linux-2.6.35.y  
  30.   remotes/origin/linux-2.6.36.y  
  31.   remotes/origin/linux-2.6.37.y  
  32.   remotes/origin/linux-2.6.38.y  
  33.   remotes/origin/linux-2.6.39.y  
  34.   remotes/origin/linux-3.0.y  
  35.   remotes/origin/linux-3.1.y  
  36.   remotes/origin/linux-3.10.y  
  37.   remotes/origin/linux-3.11.y  
  38.   remotes/origin/linux-3.12.y  
  39.   remotes/origin/linux-3.13.y  
  40.   remotes/origin/linux-3.14.y  
  41.   remotes/origin/linux-3.2.y  
  42.   remotes/origin/linux-3.3.y  
  43.   remotes/origin/linux-3.4.y  
  44.   remotes/origin/linux-3.5.y  
  45.   remotes/origin/linux-3.6.y  
  46.   remotes/origin/linux-3.7.y  
  47.   remotes/origin/linux-3.8.y  
  48.   remotes/origin/linux-3.9.y  
  49.   remotes/origin/master  


6. 创建一个新分支:

 

 

  1. $ git checkout -b linux-3.10-charles   
  2. Switched to a new branch ‘linux-3.10-charles‘  
  1. $ git branch   
  2. * linux-3.10-charles  
  3.   linux-3.10.y  
  4.   master  

7. 修改文件 init/main.c, 加入一行注释,然后 执行

 

 

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

 

  1. e$ git add -i  
  2.            staged     unstaged path  
  3.   1:        +2/-0      nothing init/main.c  
  4.   
  5. *** Commands ***  
  6.   1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked  
  7.   5: [p]atch      6: [d]iff   7: [q]uit   8: [h]elp  
  8. What now>   


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

 

 

  1. What now> r  
  2.            staged     unstaged path  
  3.   1:        +2/-0      nothing [i]nit/main.c  
  4. Revert>>   
  5. reverted one path  
  6.   
  7. *** Commands ***  
  8.   1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked  
  9.   5: [p]atch      6: [d]iff   7: [q]uit   8: [h]elp  
  10. What now> q  

这个时候再执行 git status:

 

 

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


8. 提交修改:

 

 

  1. $ git commit -a -m "This is just for testing git"  
  2. [linux-3.10-charles 9eabb78] This is just for testing git  
  3.  1 file changed, 1 insertion(+), 1 deletion(-)  

9. 查看修改记录(git log):

 

 

  1. commit 9eabb788b5c33efed589b1263aedd69b97e592ac  
  2. Author: Taotao Ding <htdkd@hotmail.com>  
  3. Date:   Wed May 7 03:36:55 2014 +0900  
  4.   
  5.     This is just for testing git  
  6.   
  7. commit 5d897eedc505bb8af1f4865ae381eadbfd3bc8c1  
  8. Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>  
  9. Date:   Tue May 6 07:56:24 2014 -0700  
  10.   
  11.     Linux 3.10.39  
  12.   
  13. commit 6b32172a1d3cffa74067ced96612bd13658d4fcf  
  14. Author: Felipe Balbi <balbi@ti.com>  
  15. Date:   Tue Feb 25 10:58:43 2014 -0600  
  16.   
  17.     usb: musb: avoid NULL pointer dereference  
  18.       

可以看到,修改已经被记录起来了。

 

 

  1. git log  -p  
  2. commit 9eabb788b5c33efed589b1263aedd69b97e592ac  
  3. Author: Taotao Ding <htdkd@hotmail.com>  
  4. Date:   Wed May 7 03:36:55 2014 +0900  
  5.   
  6.     This is just for testing git  
  7.   
  8. diff --git a/init/main.c b/init/main.c  
  9. index e83ac04..febc1e9 100644  
  10. --- a/init/main.c  
  11. +++ b/init/main.c  
  12. @@ -10,7 +10,7 @@  
  13.   */  
  14.    
  15.  #define DEBUG          /* Enable initcall_debug */  
  16. -  
  17. +/* This is a test line for git */  
  18.  #include <linux/types.h>  
  19.  #include <linux/module.h>  
  20.  #include <linux/proc_fs.h>  


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

 

 

  1. $ git log master..HEAD init/main.c  
  2. commit 9eabb788b5c33efed589b1263aedd69b97e592ac  
  3. Author: Taotao Ding <htdkd@hotmail.com>  
  4. Date:   Wed May 7 03:36:55 2014 +0900  
  5.   
  6.     This is just for testing git  
  7.   
  8. commit b7a52f5111bc53ffbfff96330621cbde80df6ba4  
  9. Author: Theodore Ts‘o <tytso@mit.edu>  
  10. Date:   Tue Sep 10 10:52:35 2013 -0400  
  11.   
  12.     random: run random_int_secret_init() run after all late_initcalls  
  13.       
  14.     commit 47d06e532e95b71c0db3839ebdef3fe8812fca2c upstream.  
  15.       
  16.     The some platforms (e.g., ARM) initializes their clocks as  
  17.     late_initcalls for some unknown reason.  So make sure  
  18.     random_int_secret_init() is run after all of the late_initcalls are  
  19.     run.  
  20.       
  21.     Signed-off-by: "Theodore Ts‘o" <tytso@mit.edu>  
  22.     Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>  


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

 

 

  1. $ git log linux-3.10.y..linux-3.10-charles   
  2. commit 9eabb788b5c33efed589b1263aedd69b97e592ac  
  3. Author: Taotao Ding <htdkd@hotmail.com>  
  4. Date:   Wed May 7 03:36:55 2014 +0900  
  5.   
  6.     This is just for testing git  


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

 

 

  1. $ git log linux-3.10.y..HEAD  
  2. commit 9eabb788b5c33efed589b1263aedd69b97e592ac  
  3. Author: Taotao Ding <htdkd@hotmail.com>  
  4. Date:   Wed May 7 03:36:55 2014 +0900  
  5.   
  6.     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)

 

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

原文:http://www.cnblogs.com/Ph-one/p/4937369.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!