Chinaunix首页 | 论坛 | 博客
  • 博客访问: 593629
  • 博文数量: 353
  • 博客积分: 1104
  • 博客等级: 少尉
  • 技术积分: 1457
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-23 23:02
个人简介

1、刚工作时做Linux 流控;后来做安全操作系统;再后来做操作系统加固;现在做TCP 加速。唉!没离开过类Unix!!!但是水平有限。。

文章存档

2015年(80)

2013年(4)

2012年(90)

2011年(177)

2010年(1)

2009年(1)

分类: LINUX

2011-10-25 15:01:23

创建一个 Git 版本库

$ cd project/
$ git init --bare # 在一个确定的目录中,创建一个空的git库(bare参数要加)
$ git add . # 将那些未被跟踪的文件加入版本库中
$ git commit # 将工作目录的变化提交到版本库中

Git 将根据在版本库根目录中的  文件中列出的文件名, 忽略对那些文件的跟踪, 文件和目录名,可以用 shell 正则表达式来表示。

分支与合并

$ git checkout -b linux-work # 创建一个名叫 "linux-work" 的分支
$
$ git commit -a
$ git checkout master # 回到主分支
$ git merge linux-work # 将在 linux-work 分支上的变更集合并入 master 分支
# (适用于 Git 1.5 以上版本)
$ git pull . linux-work # 将在 linux-work 分支上的变更集合并入 master 分支
# (适用于 Git 的所有版本)

引入补丁

$ git apply < ../p/foo.patch
$ git commit -a

生成补丁

$
$ git commit -a -m "commit message"
$ git format-patch HEAD^ # 生成一个 0001-commit-message.patch 的文件
# ( 这里的意思是生成当前分支的最新版本到他的父版本 HEAD^
# 的所有文件的补丁,当然你应该知道 HEAD 的概念是什么 )

网络功能

# 从主版本库中克隆

foo$ git clone git://git.kernel.org/pub/scm/git/git.git
foo$ cd git

# 将本地变更推入远程版本库

foo$ git push user@example.com:my-repository.git/

# 抓取远程版本库中的其中一个分支到本地版本库

foo$ git fetch user@example.com:my-repository.git/ remote-branch:local-branch

# 将远程版本库中的变化合并到本地

bar$ git pull git://foo/repo.git/ branch

# 用 git 协议建立版本库服务

foo$ cd /my/repository/
foo$ touch .git/git-daemon-export-ok
foo$ git daemon # 这样其他人就可以通过 git://your.machine/my/repository/.git/ 来抓取版本库

# 建立一个裸版本库( 没有工作目录的 )

foo$ mkdir my-repo.git
foo$ cd my-repo.git
foo$ git --bare init
foo$ chmod a+x .git/hooks/post-update # 用 HTTP 协议来传输版本时要这样
# 并且你需要用 push 命令来植入你的版本库的内容

查看各个版本

# 用图形界面工具查看历史

foo$ gitview # 这个命令打开图形界面窗口,你可以从中看到版本的历史沿革关系

# 查看日志

foo$ git log # 输出当前分支的日志
foo$ git log -p # 输出日志,并同时在每个提交信息之后显示补丁

# 查看指定的变更

foo$ git show HEAD # 显示变更信息,差异比较位置,
# 以及到当前分支最新状态的补丁。

查看历史记录

# 根据名称查看

foo$ git log v1.0.0 # 列举历史记录至标签 "v1.0.0"
foo$ git log master # 列举 "master" 分支的历史记录

# 根据名称关联查看

foo$ git show master^ # 检查 master 分支的最后一个父版本的内容
foo$ git show master~2 # 检查 master 祖父版本的最后内容
foo$ git show master~3 # 检查 master 曾祖父的最后内容

# 根据 "git describe" 的输出

foo$ git show v1.4.4-g730996f # 你可以用 "git describe" 命令得到这个输出

# 根据哈希序列号(在 git 内部,所有的对象都是由哈希序列号来标记的)

foo$ git show f665776185ad074b236c00751d666da7d1977dbe
foo$ git show f665776 # 通常你只要输入前几个数字已经足够

# 制作标签

foo$ git tag v1.0.0 # 将当前 HEAD 制作为 "v1.0.0" 的标签
foo$ git tag interesting v1.4.4-g730996f # 标记你感兴趣的东西(不是 HEAD)

比较版本记录

# 比较两个分支的差异
foo$ git diff origin..master # 比较 origin 与 master 的差异并输出至终端
foo$ git diff origin..master > my.patch # 输出到 my.patch 文件

# 取得尚未提交的工作于版本记录的差异
foo$ git diff --stat HEAD

"摘草莓"补丁

foo$ git cherry-pick other-branch~3 # 将另外一个分支的第四个补丁应用到当前分支
阅读(399) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~