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
$ git status # On branch master nothing to commit (working directory clean)
$ git pull Already up-to-date.
$ 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
$ 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 master7. 修改文件 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>
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")
$ 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 <[email protected]> Date: Wed May 7 03:36:55 2014 +0900 This is just for testing git commit 5d897eedc505bb8af1f4865ae381eadbfd3bc8c1 Author: Greg Kroah-Hartman <[email protected]> Date: Tue May 6 07:56:24 2014 -0700 Linux 3.10.39 commit 6b32172a1d3cffa74067ced96612bd13658d4fcf Author: Felipe Balbi <[email protected]> Date: Tue Feb 25 10:58:43 2014 -0600 usb: musb: avoid NULL pointer dereference可以看到,修改已经被记录起来了。
git log -p commit 9eabb788b5c33efed589b1263aedd69b97e592ac Author: Taotao Ding <[email protected]> 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>
$ git log master..HEAD init/main.c commit 9eabb788b5c33efed589b1263aedd69b97e592ac Author: Taotao Ding <[email protected]> Date: Wed May 7 03:36:55 2014 +0900 This is just for testing git commit b7a52f5111bc53ffbfff96330621cbde80df6ba4 Author: Theodore Ts'o <[email protected]> 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" <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
$ git log linux-3.10.y..linux-3.10-charles commit 9eabb788b5c33efed589b1263aedd69b97e592ac Author: Taotao Ding <[email protected]> Date: Wed May 7 03:36:55 2014 +0900 This is just for testing git
$ git log linux-3.10.y..HEAD commit 9eabb788b5c33efed589b1263aedd69b97e592ac Author: Taotao Ding <[email protected]> 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)