当前播放: 16 | 怎么修改老旧commit的message?
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:Git基础 (13讲)
01 | 课程综述
免费
02 | 安装Git
免费
03 | 使用Git之前需要做的最小配置
免费
04 | 创建第一个仓库并配置local用户信息
05 | 通过几次commit来认识工作区和暂存区
06 | 给文件重命名的简便方法
07 | 通过git log查看版本演变历史
08 | gitk:通过图形界面工具来查看版本历史
09 | 探密.git目录
免费
10 | commit、tree和blob三个对象之间的关系
11 | 小练习:数一数tree的个数
12 | 分离头指针情况下的注意事项
13 | 进一步理解HEAD和branch
第二章:独自使用Git时的常见场景 (16讲)
14 | 怎么删除不需要的分支?
15 | 怎么修改最新commit的message?
免费
16 | 怎么修改老旧commit的message?
17 | 怎样把连续的多个commit整理成1个?
18 | 怎样把间隔的几个commit整理成1个?
19 | 怎么比较暂存区和HEAD所含文件的差异?
20 | 怎么比较工作区和暂存区所含文件的差异?
21 | 如何让暂存区恢复成和HEAD的一样?
22 | 如何让工作区的文件恢复为和暂存区一样?
23 | 怎样取消暂存区部分文件的更改?
24 | 消除最近的几次提交
25 | 看看不同提交的指定文件的差异
26 | 正确删除文件的方法
27 | 开发中临时加塞了紧急任务怎么处理?
免费
28 | 如何指定不需要Git管理的文件?
29 | 如何将Git仓库备份到本地?
第三章:Git与GitHub的简单同步 (4讲)
30 | 注册一个GitHub账号
31 | 配置公私钥
32 | 在GitHub上创建个人仓库
33 | 把本地仓库同步到GitHub
第四章:Git多人单分支集成协作时的常见场景 (5讲)
34 | 不同人修改了不同文件如何处理?
35 | 不同人修改了同文件的不同区域如何处理?
36 | 不同人修改了同文件的同一区域如何处理?
37 | 同时变更了文件名和文件内容如何处理?
38 | 把同一文件改成了不同的文件名如何处理?
第五章:Git集成使用禁忌 (2讲)
39 | 禁止向集成分支执行push -f操作
40 | 禁止向集成分支执行变更历史的操作
第六章:初识GitHub (6讲)
41 | GitHub为什么会火?
42 | GitHub都有哪些核心功能?
免费
43 | 怎么快速淘到感兴趣的开源项目?
44 | 怎样在GitHub上搭建个人博客
45 | 开源项目怎么保证代码质量?
46 | 为何需要组织类型的仓库?
第七章:使用GitHub进行团队协作 (10讲)
47 | 创建团队的项目
48 | 怎样选择适合自己团队的工作流?
49 | 如何挑选合适的分支集成策略?
50 | 启用issue跟踪需求和任务
51 | 如何用project管理issue?
52 | 项目内部怎么实施code review?
53 | 团队协作时如何做多分支的集成?
54 | 怎样保证集成的质量?
55 | 怎样把产品包发布到GitHub上?
56 | 怎么给项目增加详细的指导文档?
第八章:GitLab实践 (6讲)
57 | 国内互联网企业为什么喜欢GitLab?
免费
58 | GitLab有哪些核心的功能?
59 | GitLab上怎么做项目管理?
60 | GitLab上怎么做code review?
61 | GitLab上怎么保证集成的质量?
62 | 怎么把应用部署到AWS上?
16 | 怎么修改老旧commit的message?

16 | 怎么修改老旧commit的message?

苏玲
携程代码平台负责人
全集18418
新人首单 ¥9.9 原价 ¥68
8
登录 后留言

精选留言(25)

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

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

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

    2018-12-14
    9
  • quaeast
    那如果要更改的是第一次提交,他的父节点是谁呢?

    作者回复: 搜索工具可以根据 “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” 即可

    2019-10-01
    2
    7
  • 可乐要加冰
    我修改乐first_commit的message,咋second_commit, third_commit, fourth_commit的commit hash都变了呢

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

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


    2019-07-02
    1
    5
  • 2020
    可以看到修改了老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也要变,依此类推

    2019-03-24
    1
    4
  • 南屿
    老师,听完之后有个问题就是被变commit的父级commit是怎么识别出来的,就比如视频里的Add refering projects 的父级commit为什么是 Add js这个commit

    作者回复: 这个版本树如果是自己创建的,我们肯定事先知道哪个commit先建,哪个commit后建,由此知道哪个是parent。这是一种方法。

    其他用git命令的方式也很多。

    比如: git show —pretty=format:%P HEAD
    这个命令可以返回HEAD指针的父commit。

    再比如:gitk 打开的界面上直接显示Parent

    2020-03-05
    1
    2
  • 皮特尔
    修改历史的 Commit message,通常用在还没有提交到集成分支之前:
    `git rebase -i father_commit_id`
    交互界面里的命令选 reword
    2020-05-24
    1
  • Patty
    修改历史commit的message,
    git rebase -I xx
    如果当前要输入的commit没有父亲节点,是否就是输入当前commit即可
    2019-02-18
    1
    1
  • Kevin.zhang🌏
    初次听老师讲述变基(base),还以为老师发错音了(编辑),以为修改message就是对它进行编辑,结果原来是rebase,对基(base)进行变更:
                在变基的时候,因为新的base的commit没有基于任何一个分支,所以处于分离头指针状态,git接下来会在我们修改message那个commit往后依次对后面的commit修改hash值但不更改commit的文件内容,让后续的commit的hash值都是基于修改mseeage之前的那个commit依次更新!
    2019-01-04
    1
  • 书豪
    老师,请问windows系统下,git rebase -i弹出sublime编辑器, 修改git-rebase-todo之后保存,没有再弹出窗口,也没有任何反应?这是什么原因?

    作者回复: sublime编辑器修改后,直接打开git bash命令行窗口,用 git status看一下状态。

    2020-07-26
  • 轻风悠扬
    老师我是不是可以理解为rebase就是从某次提交之后根据需要重新做一条分支,之后的commit可以保留或者修改。

    作者回复: 其实,rebase就是在改变之前的变更,比如你发现commit的message写得不规范,或者应该合成一个commit的却拆成了几个,又或者一个commit里面一个文件写错了,等等

    可能你新建了5个commit,创建时间早的2个需要修改,后3个commit里面的文件不用变动。用rebase命令是可以达到你要的效果的。只是,那3个在你眼里不用改动的commit,由于其父commit发生变化了,所以它们的commit id 也会发生变化。

    2020-06-14
  • 落曦
    git rebase -i fbc948a3 对任意父节点的message做变更
    2020-04-18
  • 进击的小明
    如果我想修改最早的一个commit message 用这个方法好像不太灵 我研究研究 :D
    2020-04-14
  • 要点commit的信息包括作者、描述、内容、父节点信息等,通过变基修改描述会产生连锁反应,涉及到的commit的描述都会变化,所以,在自己的开发分支上可以随意玩,公共分支不可以。
    公共分支带给团队其他成员困惑是指上面的连锁变化嘛?还是特指别的什么不良影响?
    2020-03-01
  • ptlCoder
    rebase -i xxx,如果想更改第一次的commit message,这个xxx是多少勒?第一次提交就没有parent
    2020-02-20
    1
  • 水智慧
    我以第一个commit为基,修改了第二个commit的提交信息,变基完成后,master分支从第二个commit往后所有commit的hash值都变了。但是,从原先第二个commit分出的temp分支的hash值没变!对temp分支,第二个commit的hash值没变,提交信息也没变,也就是说,temp分支变成从第一个commit分出了。请问怎么理解?
    2019-10-05
    1
  • 清风
    [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-07-28
  • 君莫惜
    修改 第 2 个commit message,那么先用 git log 获取第3个的commit Id,执行 git rebase -i commitId
    将你要更改的commit message 前面的 pick 改为 r,修改commit message,保存
    2019-06-30
  • 苦行僧
    可以设置vim作为git的默认editor
    2019-06-28
  • 孙杏
    老师好,想请教一下vim的设置问题,就是在rebase情景下或者amend情景下弹出的vim编辑模式,或者其他模式的设置应该是有快捷键的吧

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

    测试了有效

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

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

    2019-01-19
收起评论
看过的人还看
数据结构与算法之美

王争  前Google工程师

80讲 | 88978 人已学习

新人首单 ¥29.9 原价 ¥129
趣谈网络协议

刘超  网易研究院云计算技术部首席架构师

51讲 | 45605 人已学习

新人首单 ¥19.9 原价 ¥99
MySQL实战45讲

林晓斌  网名丁奇,前阿里资深技术专家

49讲 | 57796 人已学习

新人首单 ¥29.9 原价 ¥129
左耳听风

陈皓  网名“左耳朵耗子”,资深技术专家,骨灰级程序员

109讲 | 46241 人已学习

新人首单 ¥69.9 原价 ¥299