Git (2) 進階git操作

檢查歷史紀錄

$ git log

commit afe36485cb94078a1ba9a7377398247e4d181765 (HEAD -> master)
Author: liangsmfish <007liang7@gmail.com>
Date:   Mon Dec 10 01:05:06 2018 +0800

    add indexs

commit db2aeaf1543f0d634ff8a8e8497e7ad520bef2f4 (origin/master)
Author: liangfish <007liang7@gmail.com>
Date:   Sun Dec 9 16:42:49 2018 +0800

    add indexs

依序顯示的會是 每個 commit 的id作者時間做了甚麼事情

條件過濾搜尋

$ git log --oneline --author="Andrew/|fish"
#搜尋 Andrew or fish 的 commit 紀錄

$ git log --oneline --grep="gg"
#搜尋 commit 訊息包含 "gg" 的紀錄

$ git log -S "print"
#搜尋 commit files 中 包含 "print" 的file

$ git log --oneline --since="9am" --until="12am" --after="2019-01"
#這樣可以找到「從 2019 年 1 月之後,每天早上 9 點到 12 點的 Commit」

修改與刪除檔案

$ git rm test.html # 刪除 test.html

$ mv test.html train.html # 把 test.html 改成 train.html

修改 Commit 紀錄

使用 –amend 參數來進行 (Commit只能處理最後一次)


$ git log --oneline
4879515 WTF
7dbc437 add hello.html
657fce7 add container
abb4f43 update index page
cef6e40 create index page
cc797cd init commit

$ git commit --amend -m "Welcome To Facebook"
[master 614a90c] Welcome To Facebook
Date: Wed Aug 16 05:42:56 2017 +0800
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 config/database.yml

$ git log --oneline
614a90c Welcome To Facebook
7dbc437 add hello.html
657fce7 add container
abb4f43 update index page
cef6e40 create index page
cc797cd init commit

追加檔案到最近一次的 Commit

使用 –amend 參數來進行 Commit

$ git add lost.html

$ git commit --amend --no-edit

這樣就可以把檔案併入最後一次的 Commit

新增目錄

git 不接受空目錄,所以要隨便初始一個空檔案


$ mkdir pic

$ touch pic/.gitkeep

過濾檔案進入Git

建立一個 .gitignore 規則檔案


$ touch .gitignore

然後編輯 gitignore

# 忽略單一檔案

secret.txt

# 忽略所有副檔名是 .tmp 的檔案

*.tmp

強迫闖關(無視規則)


$ git add -f 檔案名稱

原住民處理(在規則建立前存在者)

$ git rm secret.txt --cached #脫離Git 控管

$ git clean -fX #全部清除

檢視特定檔案的 Commit 紀錄


$ git log test.html

$ git log test.html -p #顯示每次commit的修改內容

檢查程式碼的作者


$ git blame index.html

$ git blame -L 5,10 index.html #顯示5~10行的範圍

復活檔案


$ rm *.html

$ git status

On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    deleted:    test.html

$ git checkout test.html

$ git checkout . #全體復活

修改剛剛

0%