您的位置:首页 > 编程语言

源代码管理工具GIT之使用

2010-04-27 20:52 330 查看

源代码管理工具GIT之使用

Kernel Hackers' Guide to githttp://linux.yyz.us/git-howto.html
准备开始
安装 git
可以从以下网址下载最新稳定版本:
http://www.kernel.org/pub/software/scm/git/
下载Linux内核树
$ git clone /
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git/ linux-2.6
注意:内核树非常大,这会下载超过300M的压缩数据

基本任务
更新本地内核树到最新的2.6.x上游内核树(快速合并)
$ cd linux-2.6
$ git pull / git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

或者更简单地,从已克隆的本地路径中直接拉过来:
$ cd linux-2.6
$ git pull
撤销所有本地修改:
$ git checkout -f
签入您的修改
# 转到存储库
$ cd linux-2.6

# 做一些修改
$ vi drivers/net/sk98lin/skdim.c

# 注意: 运行 'git add' 和 'git rm' 来增加或删除文件.

# 签入所有修改
$ git commit -a
撤销最近的提交:
某些时候您做了一些提交,或仅仅修改,但想消除这些提交.
$ cd my-kernel-tree-2.6
$ git reset HEAD~2 # 使最后两个提交消失
将会使最上部的两个提交消失. 如果有人下载了提交过的树,但您又刚刚消除了,请不要这样做.
注意这与git revert大不相同, git revert会应用一个恢复补丁作为额外的提交.
以diff格式列出工作目录所有的更改.
显示改变从最后的'git add' 或 'git rm'开始:
$ git diff
显示改变从最后的提交开始:
$ git diff HEAD

获取工作目录中所有改变的汇总
$ git status
列出所有变更集的描述
$ git log
# 'git log' 的 "-p" 选项另外还会以变更集文本的方式显示差异. "--stat" 选项还会以变更集文本的方式显示差异状态.
列出特定文件的所有变更集
(这里以为例, net/ieee80211/ieee80211_module.c)
$ git log net/ieee80211/ieee80211_module.c

分支
列出所有分支
$ git branch
获取想要的当前分支到工作目录
$ git checkout $branch
创建新分支,并把它作为当前的
$ git checkout -b my-new-branch-name master
检查哪个分支是当前的
$ git status
('git branch'也可以显示当前分支,使用一个"*" 来指示)
获取当前分支与主分支的差异
在大多数有分支的树中,.git/refs/heads/master包含了当前的上游树,很方便用来比较和合并. (没有分支的树,'master' 简单地包含您最新的更改)
$ git diff master..HEAD
(这等价于 git diff HEAD, 当与HEAD使用的时候)
获取当前分支与主分支的变更列表
$ git log master..HEAD
(这等价于 git log, 当与HEAD使用的时候)
更或者是所有的变更描述,获取每个变更的在线总结:
$ git shortlog master..HEAD
从一个分支合并变更到另一个
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.
假设您在分支 A 和 分支 B 上工作,并且两个分支工作后都完成了,然后把两个分支都合并到主线分支 M 上
$ git checkout M # 转到分支 M
$ git merge A # 合并 A 到 M
$ git merge B # 合并 B 到 M

杂项(此处略,未看,Sorry)
优化存储库.
签出一个较老的内核版本.
以伯克利mbox-format文件应用所有补丁.
不要忘了经常下载tags.
标记一个特殊的提交.

扩展阅读
另外一个很好的介绍是官方指南git tutorial, 更深入的见man page documentation.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: