- 前言
- 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 常用命令
第 21 关 reset
There are two files to be committed. The goal was to add each file as a separate commit, however both were added by accident. Unstage the file 'to_commit_second.rb' using the reset command (don't commit anything).
已经有 2 个文件即将被提交(即是已加入到暂存区),但为了把每个文件分别提交,需要把 'to_commit_second.rb' 这个文件用 reset 命令从暂存区中移出(不要提交任何文件)。
呵呵,本关和第 12 关很像啊,都是要从暂存区移出文件,甚至你用第 12 关的 git rm --cached
命令就可以完成任务,但是既然用已有的知识就可以解决,为什么还要专门设这么一关?
请再回忆一下第 3 关的“Git 文件生命周期”那张图(这张图真是很重要啊,我们在第 9 关也曾经回忆过一次)。处于工作目录的文件,可能会有 2 种状态,一种是 untracked,表示这是以前仓库没有的文件,它是新来的;一种是 modified,表示这是仓库里已有的文件,它被修改过了。虽然不管处于哪种状态,把它们加入到暂存区的命令都是 commit add
,但这条命令其实包含了 2 种可能的含义:给仓库增加一个文件、或者修改仓库已有的文件,而把文件从暂存区移出的操作也就相对应地有了 2 种场景,一种是把新增的文件从暂存区移出,一种是把修改过的文件从暂存区移出。第 12 关和本关就是为了考察这 2 种场景而设计的,第 12 关的针对第 1 种场景,本关针对第 2 种场景。
把一个已修改过的文件从暂存区移出的命令是:
$ git reset your-file
第 21 关过关画面如下:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论