您的位置:软件测试 > 开源软件测试 > 开源配置管理工具 >
图解Git中的常用命令
作者:网络转载 发布时间:[ 2014/7/28 16:35:44 ] 推荐标签:开源配置管理


  如果给了文件名(或者 -p选项), 那么工作效果和带文件名的 checkout 差不多,除了索引被更新。

 

  Merge

  merge 命令把不同分支合并起来。合并前,索引必须和当前提交相同。如果另一个分支是当前提交的祖父节点,那么合并命令将什么也不做。 另一中情况是如果当前提交是另一个分支的祖父节点,导致 fast-forward 合并。指向只是简单的移动,并生成一个新的提交。

 

  否则是一次真正的合并。默认把当前提交(ed489 如下所示)和另一个提交(33104)以及他们的共同祖父节点(b325c)进行一次三方合并。结果是先保存当前目录和索引,然后和父节点33104一起做一次新提交。

 


  Cherry Pick

  cherry-pick 命令”复制”一个提交节点并在当前复制做一次完全一样的新提交。

 

  Rebase

  衍合是合并命令的另一种选择。合并把两个父分支合并进行一次提交,提交历史不是线性的。衍合在当前分支上重演另一个分支的历史,提交历史是线性的。 本质上,这是线性化的自动的 cherry-pick

 

  上面的命令都在topic分支中进行,而不是master分支,在master分支上重演,并且把分支指向新的节点。注意旧提交没有被引用,将被回收。

  要限制回滚范围,使用--onto选项。下面的命令在master分支上重演当前分支从169a6以来的近几个提交,即2c33a。

  同样有git rebase --interactive让你更方便的完成一些复杂操组,比如丢弃、重排、修改、合并提交。没有图片体现着下,细节看这里:git-rebase (1)

  技术说明

  文件内容并没有真正存储在索引(.git/index)或者提交对象中,而是以 blob 的形式分别存储在数据库中(.git/objects),并用 SHA-1值来校验。 索引文件用识别码列出相关的 blob 文件以及别的数据。对于提交来说,以树(tree)的形式存储,同样用对于的哈希值识别。树对应着工作目录中的文件夹,树中包含的树或者 blob 对象对应着相应的子目录和文件。每次提交都存储下它的上一级树的识别码。

  如果用 detached HEAD 提交,那么后一次提交会被 the reflog for HEAD 引用。但是过一段时间失效,终被回收,与git commit --amend或者git rebase很像。

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd