**每天有空会过几关,当是学习git。坚持就是胜利。
过到46关之后毫无斗志,期间因为不懂的比较多,所以翻看了答案。惭愧惭愧,希望大家当是反面教材,坚持到底。
顺便推荐这个awesome(有关git和github的整理) **
最近(现在可以说是之前了)在学习git,看的书是官方的(发现书和游戏好像是配套的。。。)
pro git 中文版
但是单单看书,手不动一动感觉完全无法理解。
正当我苦恼的时候看到了这个游戏
githug
由于这个游戏是Ruby写的。所以需要先安装Ruby
下载地址
windows基本上点下一步就完成了。
安装Ruby后就可以安装游戏了
懒得写了。。。以下摘自https://github.com/Gazler/githug
To install Githug, run
gem install githug
If you get a complaint about permissions, you can rerun the command with sudo
:
sudo gem install githug
ok,然后就可以开始游戏了。
以下是第一关内容:
Name: init
Level: 1
Difficulty: *
A new directory,git_hug
, has been created; initialize an empty repository in it.
C:\Sites>cd git_hug
C:\Sites\git_hug>git init
Initialized empty Git repository in C:/Sites/git_hug/.git/
C:\Sites\git_hug>githug
Githug *
Congratulations, you have solved the level!
下面时玩游戏时做的一些笔记,希望对大家有帮助
help
git help <命令>
查看相应命令的说明
ignore:
通过编写gitignore来忽略其他文件。
.gitignore 的格式规范如下:
所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式最后跟反斜杠(/)说明要忽略的是目录 。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell所使用的简化了的正则表达式。
星号(*)匹配零个或多个任意字符;
[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
我们再看一个 .gitignore 文件的例子:
#. 此为注释 – 将被 Git 忽略
#. 忽略所有 .a 结尾的文件
*.a
#. 但 lib.a 除外
!lib.a
#. 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
#. 忽略 build/ 目录下的所有文件
build/
#. 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/.txt
rm:
rm表示删除文件
git rm 表示从git仓库中删除
reset:
表示从staged中移除。
stash:
暂存。再不提交的状况下将文件保存
mv:
mv并不改变仓库中的文件名。应使用git mv
log:
git log 命令可以用来查看提交历史
$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
removed unnecessary test code
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 10:31:28 2008 -0700
first commit
默认不用任何参数的话,git log会按提交时间列出所有的更新,最近的更新排在最上面。看到了吗,每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。
tag:
git tag 查看标签。
git tag 内容 轻量级标签
git tag -a v1.4 -m 'my version 1.4'
创建一个含附注类型的标签,用 -a (译注:取annotated的首字母)指定标签名字即可。而 -m 选项则指定了对应的标签说明。
git tag -s v1.5 -m 'my signed 1.5 tag'
如果你有自己的私钥,还可以用 GPG 来签署标签,只需要把之前的 -a 改为 -s (译注: 取 signed 的首字母)
commit:
git commit --amend
修改上一次提交。
git commit --date=03.14.2016
在未来的某一天提交
fetch
git fetch origin
取回更新,但不和并
pull
git pull origin master
拉取更新到本地并合并
push:
git push --tags origin master
将标签推送到远程仓库
git push origin test_branch:test_branch
将分支推送到远程仓库
remote
查看远程仓库
git remote
查看远程仓库名称
git remote -v
查看远程仓库地址
git remote add
添加远程仓库
diff
git diff
查看与上一版本之间的区别
blame
git blame <文件名>
查看某文件的修改记录
branch
git branch
创建新的分支
checkout
git checkout
切换到另一个分支
git checkout -b
创建一个新的分支,并切换到这个分支上
git checkout tags/v1.2
切换到tags为1.2的分支上
git checkout test_branch HEAD^1
创建一个分支,基于上一个commit的版本
git checkout -d old_branch
删除分支
merge
git merge feature
合并分支
rebase
git rebase master
合并分支,使合并记录更加简洁
git rebase -i <某次提交的哈希值>
重命名提交。当涉及提交修改时,应该想到 git rebase -i 命令,它接受可以一个参数(提交的哈希值),它将罗列出此提交之后的所有提交,然后可以对个个提交做对应的操作。也可以重命名图标和合并多次提交。
repack
git repack
将版本库未打包的松散对象打包
git repack -d
删除打包之后产生的新包
cherry pick
git cherry-pick ca32a6dac7b6f97975edbe19a4296c2ee7682f68
应用某一个提交修改,hashcode使用git log --all获取
grep
搜索
git grep <正则表达式>
git grep支持各种条件搜索及正则表达式,平时用的不多,但感觉功能强大。
网友评论