zoukankan      html  css  js  c++  java
  • git 命令(提高篇)的本质理解

    上一篇博客:【[git 命令(提高篇)的本质理解] (http://www.cnblogs.com/juking/p/7105744.html)】介绍了Git 的基础知识 —— 提交、分支以及在提交树上移动。 这些概念涵盖了 Git 90% 的功能,同样也足够满足开发者的日常需求

    本篇博客介绍剩余的 10% 指令 在处理复杂的工作流时(或者当你陷入困惑时)可能就显示尤为重要了。

    接下来要讨论的这些高级话题

    1. 整理提交记录, git cherry-pick <提交号>

    • 本质:将一些提交复制到当前所在的位置(HEAD)下面。
      如图1.1

      这里有一个仓库, 我们想将 side 分支上的工作复制到 master 分支,你立刻想到了之前学过的 rebase 了吧?但是咱们还是看看 cherry-pick 有什么本领吧。
    $  git cherry-pick C2 C4              ## 将 C2到C4提交,复制到 当前HEAD所指向位置
    

    如图1.2

    2. 交互式rebase , git rebase --interactive (缩写为 : -i)

    • 本质:将一些提交复制到当前所在的位置(HEAD)下面。

    备注:当你你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 再好不过了 —— 没有比这更简单的方式了。

    但是如果你不清楚你想要的提交记录的哈希值呢? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase —— 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了

    当 rebase UI界面打开时, 你能做3件事:

    1. 调整提交记录的顺序(通过鼠标拖放来完成)
    2. 删除你不想要的提交(通过切换 pick 的状态来完成,关闭就意味着你不想要这个提交记录)
    3. 合并提交。 遗憾的是由于某种逻辑的原因,我们的课程不支持此功能,因此我不会详细介绍这个操作。简而言之,它允许你把多个提交记录合并成一个。

    例如,如图2.1

    $  git rebase -i  HEAD~4             ## 当前HEAD位置,向前4次提交,重新排列,一般会对话框
    

    结果,如图2.2

    下图问题有点难(通关问题):

    解决办法

    $ git rebase i C1 C4             ## 将循序定为 C1<--C3 <--C5 <--C4<--C2
    $ git branch -f master C4'   ## 强制性将master 分支 指向 C4' ,实际上 丢弃了 C2' 节点
    
  • 相关阅读:
    mysql-索引与优化
    sql优化
    PHP高并发
    MySQL 数据类型
    ERROR 2013 (HY000): Lost connection to MySQL server
    建模各阶段以及相关UML构造笔记
    Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发
    Code Complete 笔记—— 第一章
    Laravel使用笔记 —— migration
    本地xdebug调试搭建 Laravel+homestead+phpstorm
  • 原文地址:https://www.cnblogs.com/juking/p/7107028.html
Copyright © 2011-2022 走看看