- 前言
- Githug 安装和使用方法
- 关卡列表
- 第 1 关 init
- 第 2 关 config
- 第 3 关 add
- 第 4 关 commit
- 第 5 关 clone
- 第 6 关 clone_to_folder
- 第 7 关 ignore
- 第 8 关 include
- 第 9 关 status
- 第 10 关 number_of_files_committed
- 第 11 关 rm
- 第 12 关 rm_cached
- 第 13 关 stash
- 第 14 关 rename
- 第 15 关 restructure
- 第 16 关 log
- 第 17 关 tag
- 第 18 关 push_tags
- 第 19 关 commit_amend
- 第 20 关 commit_in_future
- 第 21 关 reset
- 第 22 关 reset_soft
- 第 23 关 checkout_file
- 第 24 关 remote
- 第 25 关 remote_url
- 第 26 关 pull
- 第 27 关 remote_add
- 第 28 关 push
- 第 29 关 diff
- 第 30 关 blame
- 第 31 关 branch
- 第 32 关 checkout
- 第 33 关 checkout_tag
- 第 34 关 checkout_tag_over_branch
- 第 35 关 branch_at
- 第 36 关 delete_branch
- 第 37 关 push_branch
- 第 38 关 merge
- 第 39 关 fetch
- 第 40 关 rebase
- 第 41 关 repack
- 第 42 关 cherry-pick
- 第 43 关 grep
- 第 44 关 rename_commit
- 第 45 关 squash
- 第 46 关 merge_squash
- 第 47 关 reorder
- 第 48 关 bisect
- 第 49 关 stage_lines
- 第 50 关 find_old_branch
- 第 51 关 revert
- 第 52 关 restore
- 第 53 关 conflict
- 第 54 关 submodule
- 第 55 关 contribute
- 附录 A Git 学习资源
- 附录 B Linux 常用命令
- 附录 C Vim 常用命令
第 44 关 rename_commit
Correct the typo in the message of your first (non-root) commit.
在第一次提交时有一个拼写错误,修正它。
在使用 Git 的过程中,难免会出现要改写提交内容的情况,Git 提供了非常强大的修改历史的工具,我们就以本关为例,详细说明如何修改历史,并在接下来的第 45 关和第 47 关再做另外 2 个练习。
先看一下提交日志:
$ git log --pretty=oneline
771b71dca888e80d2bf716672b1475e85a27d695 Second commit
06973a37415e520eff0bace38181f131698cd888 First coommit
37d84aed48418346c4567bb863a0eba4617ba5b1 Initial commit
一共有过 3 次提交,注意其中哈希值为 "06973a37415e520eff" 的这次提交,提交说明 "First coommit" 中的第 2 个单词拼错了。
修改提交历史的命令格式是:
$ git rebase -i hash-code
我们已经在第 40 关接触过 git rebase
命令,当时是用它来合并分支。但是加了 -i
参数之后,用途就变为修改提交历史了。其后再跟一个某一条提交日志的哈希值,表示要修改这条日志之前的提交历史。
现在,找到 "First coommit" 下面一条日志的哈希值 "37d84aed48418346c4",然后输入下面的命令:
$ git rebase -i 37d84aed48418346c4
这时,会启动文本编辑器,显示如下内容:
pick 06973a3 First coommit
pick 771b71d Second commit
这 2 行是历史日志,但和 git log
的区别在于 git log
是按更新时间从后到前显示日志,而这里是按从前到后显示。每一行的前面有一个命令词,表示对此次更新执行什么操作,有以下几种命令:
- "pick",表示执行此次提交;
- "reword",表示执行此次提交,但要修改备注内容;
- "edit",表示可以修改此次提交,比如再追加文件或修改文件;
- "squash",表示把此次提交的内容合并到上次提交中,备注内容也合并到上次提交中;
- "fixup",和 "squash" 类似,但会丢弃掉此次备注内容;
- "exec",执行命令行下的命令;
- "drop",删除此次提交。
本关就使用 "reword" 命令来完成任务。把第 1 行前面的 "pick" 改为 "reword"(注意,不用改哈希值后面的备注内容),如下:
reword 06973a3 First coommit
pick 771b71d Second commit
接下来保存并退出,马上系统会再次打开编辑器,显示以下内容:
First coommit
# Please enter the commit message for your changes.
这时,你把 "coommit" 改为 "commit",保存并退出,再查看日志,就会发现历史日志的备注内容已经改变了。
第 44 关过关画面如下:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论