zoukankan      html  css  js  c++  java
  • git--rebase

    今天研究了一下git的rebase

    rebase中文“变基” ,改变基础(挂载点)的意思

    最基本的rebase xxx分支:

    目前有两个分支:master主分支和newbranch分支。现在位于newbranch上面,log图:

    运行:git rebase master

    可以看到,该rebase命令把newbranch上的三个commit按顺序加到了master的后面,就好像是从master分支上提交了三个新的commit一样。

    注意,虽然之前newbranch里的提交hash值和命令之后不一样,但其中包含的数据是一样的,hash值不一样是因为这已经是新的commit了。

    也可以加- i参数,i代表交互interaction(交互)

    这可以指定某几个commit 变基到另一个地方,使用方式: git rebase -i  goWhere

    其中goWhere是要rebase去的基点

    比如当前仓库分支情况如下图所示:

    然后如果我们运行git rebase master的话,那么系统会分析当前分支(branch1)和master是从哪个节点开始分开的(本例中显然就是c1),

    那么就会把c1之后的branch1分支依次插接到master后面,如图所示:

    但如果我们不想要这么多commit都被插接过去(现在这里有c2/c3/c4),但如果是正常的开发情况,我们自己的分支至少一天提交一次,开发周期算两周,那就是十几次。我们合到主分支上的时候不希望全部commit都合过去,只需要一个commit就好。

    当然我们可以用merge squash,但我们又不希望分支图乱糟糟的。

    这时候使用git rebase -i master,然后git会为你自动打开一个vi窗口,你可以选择其中每个commit你要还是不要,要的方式。

    假设我们有一个feature_x分支。已经commit一个d7322aa。之后我们一直在努力为该功能添加新元素(新的commit),包括CSS中的一些更改。

    现在,我们希望将最后三个commit压缩为一个,这样push的时候也不至于太多无用的commit。

    我们要怎么做呢?很简单:

    git rebase -i HEAD~3

    这是我们会发现,我们进入编辑界面,并且显示内容如下:

    这个界面是让我们告诉git该如何处理每个commit。这里我们想保留f392171这个commit,所以我们需要做的就是将以下两个commit合并到第一个上,我们将编辑界面的内容改成这样即可:

    ok了,接下来esc,:wq保存即可了。

    注意:不要合并已经push的commit……

  • 相关阅读:
    WP7开发学习(4):Style样式的四种使用
    如何:查找由 DataTemplate 生成的元素
    wp7——sqlite数据库操作
    SQL Server Reporting Services(简称SSRS)
    WP7入门 (二)主题、样式与模版
    为Pivot不同的PivotItem定制ApplicationBar
    Binding数据绑定
    (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画
    WPF中Binding的技巧
    sql server 里的 over
  • 原文地址:https://www.cnblogs.com/FdWzy/p/13494006.html
Copyright © 2011-2022 走看看