• 小美
    2018-12-14
    老师,方便说下,为什么 rebase -i git 会分离头指针,git 这么设计的目的是什么呢?
    谢谢老师

    作者回复: git rebase工作的过程中,就是用了分离头指针。rebase意味着基于新base的commit来变更部分commits。它处理的时候,把HEAD指向base的commit,此时如果该commit没有对应branch,就处于分离头指针的状态,然后重新一个一个生成新的commit,当rebase创建完最后一个commit后,结束分离头状态,Git让变完基的分支名指向HEAD。

    后续课程我们再把这个过程通过详细的图示给大家展示一下。这个阶段不妨先尝试用一下。

    
     7
  • 可乐要加冰
    2019-07-02
    我修改乐first_commit的message,咋second_commit, third_commit, fourth_commit的commit hash都变了呢

    作者回复: 很好的发现! 那是因为 message 也是commit的属性,是确定commit的hash值的一个因子。其次,second_commit 有个 parent 的属性,parent的内容发生了变化,因此,second_commit 的hash也变了。

    以此类推,后面的commit也发生了变化。


    
     3
  • 2020
    2019-03-24
    可以看到修改了老message后,自父亲commit以下,所有commit都变了,这是为什么,为什么不只修改2个commit,就像链表操作一样,只需要修改当前节点和当前节点的子节点就可以了,是因为git不允许修改commit对象吗?只允许新建commit对象。

    作者回复: blob是只看内容的,两个文件如果内容相同,对应的blob是相同的,即使这俩文件在不同的git仓库。

    但commit还包括commit的message,作者,变更时间,父亲等属性,这些🀄️的一个发生变化了,在git眼里就是不同的commit。

    如果前3个commit的message变了,前3哥commit就变了,它一变,前2个commit的parent就变了,因此前2个commit也要变,依此类推

    
     3
  • quaeast
    2019-10-01
    那如果要更改的是第一次提交,他的父节点是谁呢?

    作者回复: 搜索工具可以根据 “how to rebase the oldest commit” 可以搜到 how do i git rebase the first commit,
    https://stackoverflow.com/questions/22992543/how-do-i-git-rebase-the-first-commit

    里面告诉我们执行 “git rebase -i --root” 即可

     1
     1
  • Patty
    2019-02-18
    修改历史commit的message,
    git rebase -I xx
    如果当前要输入的commit没有父亲节点,是否就是输入当前commit即可
    
     1
  • 水智慧
    2019-10-05
    我以第一个commit为基,修改了第二个commit的提交信息,变基完成后,master分支从第二个commit往后所有commit的hash值都变了。但是,从原先第二个commit分出的temp分支的hash值没变!对temp分支,第二个commit的hash值没变,提交信息也没变,也就是说,temp分支变成从第一个commit分出了。请问怎么理解?
     1
    
  • 清风
    2019-07-28
    [detached HEAD fdb2c6f] Add pom, bom dir
     Date: Sat Jul 27 20:47:25 2019 +0800
     2 files changed, 1768 insertions(+)
     create mode 100644 bom/pom.xml
     create mode 100644 pom.xml
    Successfully rebased and updated refs/heads/master.
    老师,这里的 create mode 100644 是什么呢
    展开
    
    
  • 君莫惜
    2019-06-30
    修改 第 2 个commit message,那么先用 git log 获取第3个的commit Id,执行 git rebase -i commitId
    将你要更改的commit message 前面的 pick 改为 r,修改commit message,保存
    
    
  • 苦行僧
    2019-06-28
    可以设置vim作为git的默认editor
    
    
  • 孙杏
    2019-03-21
    老师好,想请教一下vim的设置问题,就是在rebase情景下或者amend情景下弹出的vim编辑模式,或者其他模式的设置应该是有快捷键的吧

    作者回复: 这个google搜一下 “git editor 某个编辑器”,就有答案的。
    比如我用 vsc 编辑器,搜索后得到 :
    https://stackoverflow.com/questions/30024353/how-to-use-visual-studio-code-as-default-editor-for-git

    测试了有效

    
    
  • Michael翔
    2019-01-19
    对于团队中公用的分支,例如发布分支等,禁用 rebase,因为这样会破坏历史的 commit 信息的,将来要溯源、基于构建历史拉取补丁分支等就会带来极大不便

    作者回复: 说的很好。rebase通常用在还没有提交到集成分支之前。

    
    
  • 五月
    2019-01-17
    git rebase -i prenthash 修改之前历史里的commit的备注信息,是先将HEAD指针指向prent,然后在父级的基础上从新commit,创建分支,然后再逐级的覆盖分支.还是删除掉老的分支,直接用新的分支.最后再将指针指向最新的commit.所以被修改commit之后的commit hash值也会不一样.是这样吗老师?
    
    
  • Tiger
    2019-01-12
    1.rebase除了要改变某一次commit到message的时候用?还有其他什么场景会使用?2.团队协作时为什么不允许用rebase呢?
    
    
  • Kevin.zhang🌏
    2019-01-04
    初次听老师讲述变基(base),还以为老师发错音了(编辑),以为修改message就是对它进行编辑,结果原来是rebase,对基(base)进行变更:
                在变基的时候,因为新的base的commit没有基于任何一个分支,所以处于分离头指针状态,git接下来会在我们修改message那个commit往后依次对后面的commit修改hash值但不更改commit的文件内容,让后续的commit的hash值都是基于修改mseeage之前的那个commit依次更新!
    
    
  • Allen
    2018-12-29
    老师,我请教一个问题,谢谢。

    git rebase -i,修改当前的commit信息。 为甚么当前commit的hash值要发生改变呢?

    改变了hash值,带来了不便。

    作者回复: 因为commit 的属性包含创建时间和commit message这些信息

    
    
  • 虢國技醬
    2018-12-17
    打卡
    rebase 团队开发 一般情况下,不允许使用

    作者回复: 尚未提交到远端服务器的commit,是可以rebase的。

    
    
  • Watts
    2018-12-14
    老师,变基时需要填父级 commit .那最老的父级是没有父级的,是不是就不可变基了?

    作者回复: 不防看一下视频18,最初始的commit也可以变。

    
    
我们在线,来聊聊吧