githug闯关记录(1-10)

githug闯关记录(11-20)

githug闯关记录(21-30)

githug闯关记录(31-40)

githug闯关记录(41-55)

第11关

A file has been removed from the working tree, however the file was not removed from the repository. Find out what this file was and remove it.

在 git 里,创建一个新文件时,要用 git add 来告诉 git,同样,删除一个文件时候,也要告诉 git。


第12关

A file has accidentally been added to your staging area, find out which file and remove it from the staging area. NOTE Do not remove the file from the file system, only from git.

有时候执行 add 操作的时候不小心把多余的文件 add 进去了,这时我们需要把它从 staging area 移除出来,但不能删除文件。
通过 git help rm,搜索 cached,可以看到有这个参数,刚好能满足我们的需求。

--cached
Use this option to unstage and remove paths only from the index.
Working tree files, whether modified or
not, will be left alone.


第13关

You've made some changes and want to work on them later. You should save them, but don't commit them.

我们有时候需要临时修改需求,这样可以先把当前的文件复制到另外一个地方存起来。

stash 正是解决这个问题的,只需要 git stash,它就把当前未提交的改动「复制」到另一个地方暂存起来,待要恢复的时候执行 git stash pop 即可。


第14关

We have a file called oldfile.txt. We want to rename it to newfile.txt and stage this change.

这一关有两种解法,第一种是:

mv oldfile.txt newfile.txt
git rm oldfile.txt
git add newfile.txt

显然这样做用户体验很糟,Linux 肯定不会这么设计软件的。

第二种做法:

git mv oldfile.txt newfile.txt


第15关

You added some files to your repository, but now realize that your project needs to be restructured. Make a new folder named src and using Git move all of the .html files into this folder.

这一关相当于上一关的增强版,可以用通配符一起批量移动文件。


第16关

You will be asked for the hash of most recent commit. You will need to investigate the logs of the repository for this.

有时候我们要看代码的提交历史,比如 Code Review 的时候。

不过 git 自带的 git log 命令比较弱,建议使用 GUI 客户端或 tig。


第17关

We have a git repo and we want to tag the current commit with new_tag.


第18关

The README file has been committed, but it looks like the file forgotten_file.rb was missing from the commit. Add the file and amend your previous commit to include it.

git push 命令默认是不会 push Tags 的,需要加参数。

晕死,明明已经加了,githug状态还是18关。过了几天它又直接跳到了19关,当时也没有截图。把代码贴出来吧。

git push --tags
//有时候还需要指定源分支

第19关

The README file has been committed, but it looks like the file forgotten_file.rb was missing from the commit. Add the file and amend your previous commit to include it.

有时候漏掉了文件。需要单独提交。直接commit,会使之前的提交不完整。可以使用amend参数。


命令执行后会调用默认的编辑器编辑 commit message,它会自动带出之前的 message,如果不需要修改,直接保存退出即可。

第20关

Commit your changes with the future date (e.g. tomorrow).

默认提交的时候记录的是当前系统时间,但这一关要求覆盖提交日期。这个的实际场景就有点邪恶了。。自行脑补。

git help commit,查了help可以使用--date=<date>参数


**~~~~(>_<)~~~~ 原来还要提交未来的时间啊。邪恶。。真邪恶。。。**


最后由 不一样的少年 编辑于2016年12月11日 15:21