git 基礎


1. 取得項目倉庫

1.1從本地初始化

git init 初始化後會出現.git文件,Git所有數據和文件都保存在這個目錄下。

1.2從遠程倉庫克隆

git clone git://github.com/schacon/grit.git mygrit
可以重命名工程名

2. 文件狀態的變化週期

2.1git status 可以查看文件狀態

$ git status On branch master Changes to be committed:   (use "git reset HEAD <file>..." to unstage)

modified:   readme.md

文件狀態變化週期

2.2git add 命令:

  1. 開始跟蹤新文件
  2. 把已跟蹤文件放到暫存區
  3. 把衝突的文件標識爲已解決

3. 忽略某些文件

創建.gitignore文件

3.1文件 .gitignore 的格式規範如下:

• 所有空行或者以註釋符號 # 開頭的行都會被 Git 忽略。
• 可以使用標準的 glob 模式匹配。
• 匹配模式最後跟反斜槓(/)說明要忽略的是目錄。
• 要忽略指定模式以外的文件或目錄,可以在模式前加上驚歎號(!)取反。

3.2使用事例:

*.a # 忽略所有 .a 結尾的文件
!lib.a # 但 lib.a 除外
/TODO # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目錄下的所有文件
doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt


4. 查看修改內容

git diff 對比工作目錄修改文件變更內容,如果已暫存,需要使用git diff –staged命令,對比已暫存的文件和上次提交的快照。

$ git diff
warning: LF will be replaced by CRLF in readme.md.
The file will have its original line endings in your working directory.
diff –git a/readme.md b/readme.md
index 8178c76..6ed9b98 100644
— a/readme.md
+++ b/readme.md
@@ -1 +1,3 @@
+readme
+
readme


5. 提交更新

git commit 會調用默認文本編輯器,輸入提交註釋。

$ git commit
[master c196ed4] update
1 file changed, 2 insertions(+)

也可以使用 -m參數直接添加註釋。

$ git commit -m “update”
[master 8e5bf9d] update
1 file changed, 1 insertion(+), 1 deletion(-)


6. 跳過暫存區域

使用-a 參數可以跳過 git add步驟

$ git commit -a
warning: LF will be replaced by CRLF in readme.md.
The file will have its original line endings in your working directory.
[master defa62a] update
1 file changed, 1 insertion(+)


7. 移除文件

git rm 從工作區域和暫存區刪除文件
git rm –cached 只從暫存區刪除文件
如果刪除前修改過並且放入暫存區,則要用-f強制刪除


8. 移動文件

git mv from_file to_file 刪除原文件,創建新文件並且放入暫存區

Administrator@INDP42ZIY9KSKKH MINGW64 /e/git/gtf (master)
$ ll
total 2
-rw-r–r– 1 Administrator 197121 4 二月 1 21:25 gtf.txt
-rw-r–r– 1 Administrator 197121 26 二月 1 22:17 readme.md

Administrator@INDP42ZIY9KSKKH MINGW64 /e/git/gtf (master)
$ git mv gtf.txt gtf.md

Administrator@INDP42ZIY9KSKKH MINGW64 /e/git/gtf (master)
$ ll
total 2
-rw-r–r– 1 Administrator 197121 4 二月 1 21:25 gtf.md
-rw-r–r– 1 Administrator 197121 26 二月 1 22:17 readme.md


9. 查看提交歷史

git log

選項 說明
-p 按補丁格式顯示每個更新之間的差異。
–stat 顯示每次更新的文件修改統計信息。
–shortstat 只顯示 –stat 中最後的行數修改添加移除統計。
–name-only 僅在提交信息後顯示已修改的文件清單。
–name-status 顯示新增、修改、刪除的文件清單。
–abbrev-commit 僅顯示 SHA-1 的前幾個字符,而非所有的 40 個字符。
–relative-date 使用較短的相對時間顯示(比如,“2 weeks ago”)。
–graph 顯示 ASCII 圖形表示的分支合併歷史。
–pretty 使用其他格式顯示歷史提交信息。可用的選項包括 oneline,short,full,fuller 和 format(後跟指
定格式)。


$ git log
commit defa62a0eaaa3247dadb8f348287541c518be4fd (HEAD -> master)
Author: guo tengfei [email protected]
Date: Thu Feb 1 22:18:01 2018 +0800

update

commit 8e5bf9d221aafccd873752683bd67f78cbb45934
Author: guo tengfei [email protected]
Date: Thu Feb 1 22:16:01 2018 +0800

update

commit c196ed482b8035d70b95803fd67aaab0b763e8ac
Author: guo tengfei [email protected]
Date: Thu Feb 1 22:12:55 2018 +0800

update

commit d372dcd01327473fe613ad3c2086ba633225af3d
Author: guo tengfei [email protected]
Date: Thu Feb 1 21:27:03 2018 +0800

add

-p顯式每次提交的差異,-2顯式最近兩次日誌

$ git log -p -2
commit defa62a0eaaa3247dadb8f348287541c518be4fd (HEAD -> master)
Author: guo tengfei [email protected]
Date: Thu Feb 1 22:18:01 2018 +0800

update

diff –git a/readme.md b/readme.md
index edb260d..6636280 100644
— a/readme.md
+++ b/readme.md
@@ -1,3 +1,4 @@
readme
aaaa
readme
+bbbbb

commit 8e5bf9d221aafccd873752683bd67f78cbb45934
Author: guo tengfei [email protected]
Date: Thu Feb 1 22:16:01 2018 +0800

update

diff –git a/readme.md b/readme.md
index 6ed9b98..edb260d 100644
— a/readme.md
+++ b/readme.md
@@ -1,3 +1,3 @@
…….


git log –stat 只顯示修改的文件

$ git log –pretty=oneline
defa62a0eaaa3247dadb8f348287541c518be4fd (HEAD -> master) update
8e5bf9d221aafccd873752683bd67f78cbb45934 update
c196ed482b8035d70b95803fd67aaab0b763e8ac update
d372dcd01327473fe613ad3c2086ba633225af3d add


$ git log –pretty=format:”%h - %an, %ar : %s” 修改顯示日誌格式
defa62a - guo tengfei, 24 hours ago : update
8e5bf9d - guo tengfei, 24 hours ago : update
c196ed4 - guo tengfei, 24 hours ago : update
d372dcd - guo tengfei, 24 hours ago : add


選項 說明
%H 提交對象(commit)的完整哈希字串
%h 提交對象的簡短哈希字串
%T 樹對象(tree)的完整哈希字串
%t 樹對象的簡短哈希字串
%P 父對象(parent)的完整哈希字串
%p 父對象的簡短哈希字串
%an 作者(author)的名字
%ae 作者的電子郵件地址
%ad 作者修訂日期(可以用 -date= 選項定製格式)
%ar 作者修訂日期,按多久以前的方式顯示
%cn 提交者(committer)的名字
%ce 提交者的電子郵件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式顯示
%s 提交說明


git log –pretty=format:”%h %s” –graph 展示每次提交所在分支的分化衍合情況.
日誌還可以通過時間進行限制:

選項 說明
-(n) 僅顯示最近的 n 條提交
–since, –after 僅顯示指定時間之後的提交。
–until, –before 僅顯示指定時間之前的提交。
–author 僅顯示指定作者相關的提交。
–committer 僅顯示指定提交者相關的提交。


10. 撤銷操作

撤銷上次提交動作,可以用git commit –amend,即重新提交。
git reset HEAD 撤銷暫存的文件
git checkout – 撤銷工作區域文件的修改
注意,撤銷有風險,操作需謹慎。


11. git命令別名

$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.unstage 'reset HEAD --'
$ git config --global alias.last 'log -1 HEAD'
發佈了69 篇原創文章 · 獲贊 67 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章