打怪(githug)升级过程中:
githug安装
首先我们需要来安装这个游戏,githug 是用 Ruby 编写的,可通过如下命令安装:
gem install githug
如果遇到权限问题,请加上sudo:
sudo gem install githug
安装成功后,在 Terminal 里进入你常用的目录,输入githug,会提示游戏目录不存在,是否要创建一个,输入y然后回车:
根据提示cd git_hug 进入游戏目录,准备开始游戏。
输入 githug 进行过关检测和本关要完成的任务等信息.
下面是本人在一次githug闯关过程总的一些记录,一些特别熟悉简单的方式就没有记录下来.
0x06
git clone 远程库 本地文件夹
0x12
如果一个文件已经add到暂存区,还没有commit,此时如果不想要这个文件了,有两种方法:
用版本库内容清空暂存区,git reset HEAD
只把特定文件从暂存区删除,git rm –cache
0x14
直接在暂存区进行文件重命名
git mv oldfile newfile
上面这一句相当于
mv oldfile newfile
git rm oldfile
git add newfile
0x16
如果将文件进行了add操作,但是又想重构下将所有的.html文件放到src目录下
mkdir src
git mv *.html src/
0x19
可以通过git commit –amend来进行最近一次的commit信息修改. 如出现一次commit有文件忘记add加进去,git这么好当然有补救措施了.
git add .
git commit –amend
进行保存就将遗漏没有提交的文件提交上去了
0x20
将提交的时间自己设定,commit的时间是2号将其修改到3号
git commit –date=”Sat Jan 3 11:21:00 2016 +0800″ -m ‘commit_in_future’
liutxer@liutxer:~/git_hug$ git log commit 94271f606f8ea98c6e435614e338760b066bdd5c Author: liutxer <liutxer@163.com> Date: Sun Jan 3 11:21:00 2016 +0800
0x21
git reset HEAD <file>
可将暂存区对应的<file>文件恢复到和HEAD中的一致,状态仍然为commited,这里要区别于上面的git rm –cache命令,后者只是简单的将暂存区的file文件删除.
0x22
git reset --soft commitID
,将HEAD指向commitID,index和work directory不变,通过git status看到最后一次没有commit的所有操作
0x28
git rebase <branch>
的运用.可以参考git rebase
0x30
git blame <file>
可以看到文件中具体提交用户信息
0x34
当遇到分支和标签重名的情况下,而又想直接切到标签,这个时候可以使用全名如:
git checkout tags/v1.0
0x41
git gc. git版本控制没有采用增量的方式保存文件,而是当文件发生修改提交后,将整个文件进行存储,不是对其增量进行存储.这种做法提高了git的使用效率,但是很容易导致仓库中代码的重复度增高,从而造成仓库体积过大的问题.当遇到这种问题或者需要将版本库推送到远程的时候可以进行打包后再推送.
0x42
加入git版本库中存在两个分支分别为:master和dev当我们想将dev中的某个commitID应用到master中,我们可以使用git cherry-pick commitID.如果出现冲突可以应用常规的解决冲突的办法,最后使用git commit -c commitID
0x43
git grep查看git版本库中某字段.和linux上的grep作用类似
0x44
重命名commit注释.
git branch tmp
git reset --soft commitID
git commit --amend //这里修改commit注释
git cherry-pick <后面的commitID>
当然这里有更加直接的办法,直接用git rebase -i来进行指定commit来修改对应的commit
0x45
git rebase -i <after-this-commit>
以交互的方式虫心组织<after-this-commit>
之后的所有提交.可以将多个commit squash到一起,或者直接对某个commit进行编辑,做0x44所示的工作.
可以直接将每个commit行进行顺序颠倒,重新组织提交顺序.这个就是0x47了
0x46
git merge --squash <branch>
--squash
选项的含义是:本地文件内容与不使用该选项的合并结果相同,但是不提交、不移动HEAD,因此需要一条额外的commit命令。其效果相当于将another分支上的多个commit合并成一个,放在当前分支上,原来的commit历史则没有拿过来。
0x48
git bisect
可以用来查找引入bug的commit.
git bisect start <bad-commit> <good-commit>
run command
git bisect bad if run command error else git bisect good
直到整个二分查找结束,可以看到引入bug的commitID
0x49
交互式add(或者叫add块),将会一个块一个快的循环你的改动。使用命令git add -p时,你可以在每个改动“块”(即:连续的改动会被组织到一起)时进行一些选择,比如:切分当前块为更小的块、跳过一个改动块、甚至手动的编辑该块,你可以敲入?来查看所有该命令提供的选项。
0x51
git revert commitID
可以撤消一个commit的动作,并把这次的撤消操作作为一次新的提交
0x52
git reset --hard ORIG_HEAD
返回到上次HEAD指向的位置.