下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 18 | 怎样把间隔的几个commit整理成1个?
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

玩转Git三剑客

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

精选留言(14)

  • 2019-05-22
    如果要重写根提交(第一个提交),它并没有父节点,该怎么办?在提交列表中,可以手工将根提交添加进来。更简单的方式是使用 `git rebase -i --root` 命令,该命令允许你在分支上变基根提交。也就是说,Git 提供的提交列表会包含从根提交直到当前提交的所有提交。

    作者回复: 👍

    4
  • 2018-12-22
    光标圆圈怎么弄的,什么主题

    作者回复: 我也是参加视频录制,极客老师教的。mac上安装PinPoint

    3
  • 2019-10-20
    我想知道老师在进入git rebase i的交互界面时,是按什么键返回上一页拷贝根commit的
    1
  • 2019-07-09
    老师好,按照您上节课的逻辑,多个 commit 在第一次 git rebase 的时候是要编辑好保存下来,为什么在这节课的时候您把修改好的 rebase 给剪切(或者删除)了呢?

    作者回复: 不好意思,没读懂你的问题。
    17讲我们演示了把连续的4个commit整理成1个commit,18讲我们把间隔的两个commit整理成了1个commit。

  • 2019-06-04
    老师,用rebase -i来重放,即使本地没有改动,为什么需要把其他分支合并时已经解决过的冲突重新解决一遍?

    作者回复: 没明白问题。如果有图示说明一下就好了。

  • 2019-01-17
    我照着视频下来,输入git rebase --continue 出现下面的情况,请问是为什么?
    $ git rebase --continue
    Auto-merging index.js
    CONFLICT (content): Merge conflict in index.js
    error: could not apply aab62bf... 3

    Resolve all conflicts manually, mark them as resolved with
    "git add/rm <conflicted_files>", then run "git rebase --continue".
    You can instead skip this commit: run "git rebase --skip".
    To abort and get back to the state before "git rebase", run "git rebase --abort".

    Could not apply aab62bf... 3
    展开

    作者回复: 冲突解决后,记得先 git add,在git rebase --continue

  • 2018-12-27
    老师,操作完第一步以后,后悔了不想continue了该如何操作?

    作者回复: git rebase --abort

  • 2018-12-26
    老师,如果不连续的commit不包括那个祖宗commit信息,打开的交互界面的信息是不是就可以直接更改pick\squash,调整他们的顺序就可以了?

    还有,我打开交互界面以后,无法移动光标以及正确退出交互界面.按ESC键 冒号 也不可以在下面输出wq退出.是这个交互界面还有操作技巧吗?

    作者回复: 第一问,你说的对的。
    第二问,在中文输入状态下,这些操作都不灵了。你切英文试试

  • 2018-12-25
    按照操作步骤执行:
    $ git rebase -i 412cf8956b0
    interactive rebase in progress; onto 412cf89
    Last command done (1 command done):
       pick 412cf89
    Next commands to do (2 remaining commands):
       squash 26f91ae
       pick d2672bf create a complete web page
    You are currently rebasing branch 'master' on '412cf89'.

    nothing to commit, working tree clean
    The previous cherry-pick is now empty, possibly due to conflict resolution.
    If you wish to commit it anyway, use:

        git commit --allow-empty

    Otherwise, please use 'git reset'
    Could not apply 412cf89...
    上面报错:
    按照提示进行执行:
    $ git reset 将当前头重置为指定状态

    查看状态:
    $ git status
    interactive rebase in progress; onto 412cf89
    Last command done (1 command done):
       pick 412cf89
    Next commands to do (2 remaining commands):
       squash 26f91ae
       pick d2672bf create a complete web page
      (use "git rebase --edit-todo" to view and edit)
    You are currently editing a commit while rebasing branch 'master' on '412cf89'.
      (use "git commit --amend" to amend the current commit)
      (use "git rebase --continue" once you are satisfied with your changes)

    nothing to commit, working tree clean

    按照上面的最后一个提示执行命令操作:
    $ git rebase --continue
    [detached HEAD 025e988] add readme.md
     Date: Tue Dec 25 10:40:05 2018 +0800
     1 file changed, 1 insertion(+)
     create mode 100644 readme.md
    Successfully rebased and updated refs/heads/master.

    最后结果如下:
    $ git log --graph
    * commit 49f3cf97cbe396469641a43569ea7b4dd38b2edf (HEAD -> master)
    | Author: zhangdan <1375666272@qq.com>
    | Date: Tue Dec 25 10:54:24 2018 +0800
    |
    | create a complete web page
    |
    | add index + logo
    |
    | add style.css
    |
    | add js
    |
    | add a pro
    |
    * commit 025e988b6516bf97db8bf14aa56ea7ab1a2ab1b7
      Author: zhangdan <1375666272@qq.com>
      Date: Tue Dec 25 10:40:05 2018 +0800

          add readme.md

          add readme

          move file readme to readme.md
    展开

    作者回复: 嗯,多实践,看看结果是不是自己想要的。

  • 2018-12-18
    合并 不连续的commit 没有成功过,一直提示有冲突

    作者回复: 冲突属于正常现象,git需要我们自己选择哪一行用哪个变更的内容。只要把有冲突的地方解决掉,就能继续整理commit了。

  • 2018-12-16
    完全没理解把几个不连续的commit整合到一起这个过程和最终的效果,不连续的commit整合到一起后,原本插在这些被整合的commit中间的,那些没被整合的commit,该如何自处?是排在新commit之前吗,时间顺序不奇怪吗

    作者回复: rebase -i的时候,弹出的交互界面,上下commit的顺序是有讲究的,先处理上面的,再处理下面的commit。原先历史树上的commit顺序是可以根据自己的需求调整的。

    git的掌握还是需要多实践的,用来演练的git仓库,尽可能多操练,反正试错了又没损失。

  • 2018-12-15
    老师 执行 git rebase 多了话,会使的提交树感觉很乱,能不能系统的讲解一下 rebase 原理。方便理解提交树

    作者回复: 👌,我用动态演变图加具体操作结合着讲

  • 2018-12-14
    团队合作的代码,还可以修改之前的commit吗?

    作者回复: 除非团队一致决定要改,否则不允许。如果想取消以前的commit变更的内容,可以通过revert的方式。

  • 2018-12-14
    老师用 -s 改变顺序并且合并 我理解应该会产生冲突的,不知道老师能从底层原理讲解下冲突的情况吗?

    作者回复: 咱们为了给新手演示squash的功能,故意做了这个小设计。这个视频有一个commit是创建新文件,另一个commit是变更文件名(并未变更文件内容),所以就不会出现内容冲突了。

    咱们以后的课程对rebase冲突及解决步骤会详细做演示