**每天有空會過幾關(guān)醉旦,當是學習git。堅持就是勝利桨啃。
過到46關(guān)之后毫無斗志车胡,期間因為不懂的比較多,所以翻看了答案照瘾。慚愧慚愧匈棘,希望大家當是反面教材,堅持到底析命。
順便推薦這個awesome(有關(guān)git和github的整理) **
最近(現(xiàn)在可以說是之前了)在學習git主卫,看的書是官方的(發(fā)現(xiàn)書和游戲好像是配套的。碳却。队秩。)
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,然后就可以開始游戲了建钥。
以下是第一關(guān)內(nèi)容:
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 的格式規(guī)范如下:
所有空行或者以注釋符號 # 開頭的行都會被 Git 忽略熊经。
可以使用標準的 glob 模式匹配泽艘。
匹配模式最后跟反斜杠(/)說明要忽略的是目錄 。
要忽略指定模式以外的文件或目錄镐依,可以在模式前加上驚嘆號(!)取反匹涮。
所謂的 glob 模式是指 shell所使用的簡化了的正則表達式。
星號(*)匹配零個或多個任意字符槐壳;
[abc] 匹配任何一個列在方括號中的字符(這個例子要么匹配一個 a然低,要么匹配一個 b,要么匹配一個 c)务唐;
問號(?)只匹配一個任意字符雳攘;如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符范圍內(nèi)的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數(shù)字)枫笛。
我們再看一個 .gitignore 文件的例子:
#. 此為注釋 – 將被 Git 忽略
#. 忽略所有 .a 結(jié)尾的文件
*.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
默認不用任何參數(shù)的話,git log會按提交時間列出所有的更新海诲,最近的更新排在最上面繁莹。看到了嗎特幔,每次更新都有一個 SHA-1 校驗和咨演、作者的名字和電子郵件地址、提交時間蚯斯,最后縮進一個段落顯示提交說明薄风。
tag:
git tag 查看標簽。
git tag 內(nèi)容 輕量級標簽
git tag -a v1.4 -m 'my version 1.4'
創(chuàng)建一個含附注類型的標簽拍嵌,用 -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
查看與上一版本之間的區(qū)別
blame
git blame <文件名>
查看某文件的修改記錄
branch
git branch
創(chuàng)建新的分支
checkout
git checkout
切換到另一個分支
git checkout -b
創(chuàng)建一個新的分支困肩,并切換到這個分支上
git checkout tags/v1.2
切換到tags為1.2的分支上
git checkout test_branch HEAD^1
創(chuàng)建一個分支划纽,基于上一個commit的版本
git checkout -d old_branch
刪除分支
merge
git merge feature
合并分支
rebase
git rebase master
合并分支,使合并記錄更加簡潔
git rebase -i <某次提交的哈希值>
重命名提交锌畸。當涉及提交修改時勇劣,應該想到 git rebase -i 命令,它接受可以一個參數(shù)(提交的哈希值)潭枣,它將羅列出此提交之后的所有提交比默,然后可以對個個提交做對應的操作。也可以重命名圖標和合并多次提交盆犁。
repack
git repack
將版本庫未打包的松散對象打包
git repack -d
刪除打包之后產(chǎn)生的新包
cherry pick
git cherry-pick ca32a6dac7b6f97975edbe19a4296c2ee7682f68
應用某一個提交修改退敦,hashcode使用git log --all獲取
grep
搜索
git grep <正則表達式>
git grep支持各種條件搜索及正則表達式,平時用的不多蚣抗,但感覺功能強大。