工作中有他就夠了-Git使用筆記(一)

原文地址和更多文章請點(diǎn)擊:http://i.woblog.cn

簡介

這篇文章就不談什么git原理,git和其他版本控制系統(tǒng)的優(yōu)勢,只記錄常用的,不過這些已經(jīng)夠大家工作中使用了

查看git版本

git version

獲取一個版本庫

這個步驟有兩個方式,一個是新項(xiàng)目,直接創(chuàng)建,一個是clone一個已有項(xiàng)目

git init
當(dāng)面目錄會自動生成一個.git目錄

初始化到當(dāng)前目錄上一層的a目錄里
git init ../a

git clone https://github.com/ruby/ruby.git
在當(dāng)前目錄下創(chuàng)建一個ruby目錄,里面才是clone下來的內(nèi)容

git clone https://github.com/ruby/ruby.git --depth=2
克隆最近兩個提交記錄,但內(nèi)容還是全的

git clone -b ruby_2_1 https://github.com/ruby/ruby.git
只克隆ruby_2_1分支

git clone https://github.com/ruby/ruby.git ruby-clone
克隆到ruby-clone目錄

查看狀態(tài)

git status

跟蹤文件

這一步是講文件添加到暫存區(qū)

git add a.txt

提交

git commit -m "init"

忽略一些文件

是在當(dāng)前目錄下創(chuàng)建.gitignore,如:

# 忽略所有 .a 結(jié)尾的文件
*.a

# 但 lib.a 除外
!lib.a

# 僅僅忽略項(xiàng)目根目錄下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目錄下的所有文件,app/build/目錄也會忽略
build/

# 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt

# ignore all .txt files in the doc/ directory
doc/**/*.txt

#忽略當(dāng)前目錄下0-9.txt
[0-9].txt

# 忽略dbg文件和dbg目錄
dbg

# 只忽略dbg文件,不忽略dbg目錄
dbg
!dbg/

# 只忽略當(dāng)前目錄下的dbg文件和目錄,子目錄的dbg不在忽略范圍內(nèi)
/dbg

查看狀態(tài)

git status

精簡模式
git status -s
輸出

 M 11.txt
?? 12.txt

差異比較

工作目錄和暫存區(qū)域
git diff

比較git add后的文件和git commit后的文件,Git 1.6.1 及更高版本還允許使用 git diff --staged,效果是相同的,但更好記些。)
git diff --cached

提交

git add
git commit -m "init"

跳過add,第一次新添加的文件,必須git add,以后的更新,可以使用這條命令
git commit -a -m "init"

移除文件

要移除某個文件,先從暫存區(qū)移除,在提交

未添加到版本控制的直接刪除就行了

提交了的,
git rm a.txt

添加到了暫存,修改了的
git rm -f a.txt

刪除了都要git commit

刪除暫存或者已經(jīng)提交了的文件,但不在系統(tǒng)里刪除(將某個從跟蹤系統(tǒng)中去除)
git rm --cached a.txt

$ git rm log/*.log
注意到星號 * 之前的反斜杠 \, 因?yàn)?Git 有它自己的文件模式擴(kuò)展匹配方式,所以我們不用 shell 來幫忙展開。 此命令刪除 log/ 目錄下擴(kuò)展名為 .log 的所有文件。 類似的比如:

$ git rm *~
該命令為刪除以 ~ 結(jié)尾的所有文件。

移動文件

git mv 30.txt 31.txt
它相當(dāng)于運(yùn)行下面三條命令

mv README.md README
git rm README.md
git add README

查看提交歷史

輸出歷史課查看:http://www.ruanyifeng.com/blog/2012/08/how_to_read_diff.html

git log

左側(cè)顯示分支的演變
git log --graph

顯示兩條并顯示每次提交的內(nèi)容差異
git log -p -2

顯示每次提交的初略信息,所有被修改過的文件、有多少文件被修改了以及被修改過的文件的哪些行被移除或是添加了。 在每次提交的最后還有一個總結(jié)
git log --stat

格式化輸出(https://git-scm.com/book/zh/v2/Git-基礎(chǔ)-查看提交歷史)
git log --pretty=format:"%h - %an, %ar : %s"

近兩周的修改
git log --since=2.weeks

查看刪除了或添加了function_name的提交(從有到無或從無到有)
it log -Sfunction_name

顯示作者是pinging的提交,可以配置renpingqing等
git log --author pingqing

匹配提交的字符串內(nèi)容
git log --grep error

查看至于a.txt有關(guān)的提交
git log -- a/b/c.txt

查看2008 年 10 月期間,Junio Hamano 提交的但未合并的測試文件
git log --pretty="%h - %s" --author=gitster --since="2008-10-01"
--before="2008-11-01" --no-merges -- t/

撤銷

修改提交信息,他會修改最近一次提交信息
git commit --amend

忘記提交了某些文件,最后一次提交會覆蓋initial commit信息
git commit -m 'initial commit'
git add forgotten_file
git commit --amend

取消暫存的文件

比如遇到這種情況,假設(shè)我工作目錄有兩個文件,我想要的是一個文件提交一次,但是不小心執(zhí)行了git add .
這時候只需要將文件從暫存區(qū)撤銷回來
git reset HEAD 2.txt

撤銷當(dāng)前改動的文件,未添加到工作區(qū)
git checkout a.txt

原文地址和更多文章請點(diǎn)擊:http://i.woblog.cn

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容