githug通过游戏快速理解并使用git

**每天有空会过几关,当是学习git。坚持就是胜利。
过到46关之后毫无斗志,期间因为不懂的比较多,所以翻看了答案。惭愧惭愧,希望大家当是反面教材,坚持到底。
顺便推荐这个awesome(有关git和github的整理) **

《githug通过游戏快速理解并使用git》 2016-07-28 15-57-59 最终倒在这里

最近(现在可以说是之前了)在学习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支持各种条件搜索及正则表达式,平时用的不多,但感觉功能强大。

    原文作者:黑泥卡
    原文地址: https://www.jianshu.com/p/a3a83797d6e7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞