Pro Git 學習筆記

whjin發表於2019-01-16

Pro Git 學習筆記

文件地址:Pro Git
原文地址:PRO GIT 學習筆記

1、Git起步

初次執行Git前的配置

使用者資訊

git config --global user.name "your user name"
git config --global user.email "your email address"

文字編輯器

設定預設的文字編輯器:git config --global core.editor emacs

檢視配置資訊

git config --list

2、Git基礎

建立Git倉庫

在工作目錄中初始化新倉庫

git init

克隆現有倉庫

git clone url

urlsshhttps兩種,推薦使用ssh

檢查當前檔案狀態

git status

跟蹤最新檔案

git add 檔名或*.js/css/html...或.

忽略不想提交的檔案

cat .gitignore

檢視已暫存和未暫存的更新

git diff
git diff --cached

提交更新

git commit -m "提交備註資訊"

跳過使用暫存區域

git commit -a "提交備註資訊"

在提交時使用git commit -a就會把已跟蹤的已暫存檔案一起提交,跳過git add步驟,即兩個命令進行合併。

移除檔案

git rm

從已跟蹤檔案清單中移除並刪除工作目錄中的指定檔案,先使用git status檢視跟蹤檔案清單,再使用git rm進行精準移除。

強制移除使用git rm -f,但不推薦使用。

從遠端倉庫中刪除檔案,使用:

git rm --cached 檔名/*.檔案字尾/資料夾...

移動檔案

對檔案重新命名或移動檔案,可以使用:

git mv file_from file_to

檢視提交歷史

git log
git log -p -2

-p選項展開顯示每次提交的內容差異,用-2顯示最近的兩次更新。

單詞層面的對比,使用:

git log -p -U1 --word-diff

這個命令在程式碼檢查中較少使用,在圖文編輯中出現較多。

顯示摘要資訊,使用:

git log --stat

其他有用的命令:

--pretty選項可以指定使用完全不同於預設格式的方式展示提交歷史,用oneline將每個提交放在一行顯示,這在提交數很大時非常有用:

git log --pretty=online

format可以定製要顯示的記錄格式:

git log --pretty=format:"%h - %an, %ar : %s"

常用的格式佔位符寫法及其代表的意義

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

新增ASCII字串表示的簡單圖形

git log --pretty=format:"%h %s" --graph

git log 命令支援的選項

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

限制輸出長度

按照時間作限制的命令--since--until

git log --since=2.weeks

搜尋條件

  • --author 顯示指定作者的提交
  • --grep 搜尋提交說明中的關鍵字
  • --all-match 同時滿足這兩個選項搜尋條件的提交

其他常用的類似選項

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

具體示例:

git log --pretty="%h - %s"  --author=gitster --since="2018-10-01"  --before="2008-11-01" --no-merges -- t/

撤消操作

修改最後一次提交

git commit --amend

取消已經暫存的檔案

git reset HEAD 檔名

取消對檔案的修改

這條命令謹慎使用

git checkout -- 檔名

遠端倉庫的使用

檢視當前的遠端庫

git remote

顯示對應的克隆地址

git remote -v

新增遠端倉庫

git remote add [shortname] url

抓取倉庫資訊

git fetch [shortname]

從遠端倉庫抓取資料

此命令會從遠端倉庫抓取資料到本地

git fetch [remote-name]

抓取克隆的遠端倉庫的更新資料

git fetch origin

fetch命令只是把遠端倉庫的資料抓取到本地,並不會自動合併到當前工作分支

推薦使用的拉取遠端倉庫資料,並進行資料合併操作的命令

git pull

推送資料到遠端倉庫

git push origin master

檢視遠端倉庫資訊

git remote show [remote-name]

遠端倉庫的刪除和重新命名

重新命名遠端倉庫

git remote rename
git remote rename vue react

移除遠端倉庫

git remote rm vue

打標籤

顯示已有的標籤

git tag

設定條件進行搜尋

git tag -l "v1.4.2.*"

新建標籤

輕量級標籤

git tag

含附註的標籤

git tag -a
git tag -a v1.4 -m "my version 1.4"

檢視相應標籤的版本資訊

git show v1.4

簽署標籤

git tag -s
git tag -s v1.5 -m "my signed 1.5 tag"

驗證標籤

git tag -v [tag-name]
git tag -v v1.4.2.1

後期加註標籤

忘記了加註標籤,只要在打標籤的時候跟上對應提交物件的校驗和即可

git tag -a v1.2 9fceb02

分享標籤

git push origin v1.5

一次推送所有本地新增標籤

git push origin --tags

技巧和竅門

自動補全

windows系統下連續按Tab

Git 命令別名

git config --global alias.ci commit
git config --global alias.st status

Git 分支

新建testing分支

git branch testing

切換到testing分支

git checkout testing

分支的新建與合併

以上兩個命令進行合併

git checkout -b testing

Git會把工作目錄的內容恢復為檢出某分支時它所指向的那個提交物件的快照。它會自動新增、刪除和修改檔案以確保目錄的內容和當時提交時完全一樣。

合併提交內容


git merge
git checkout master
git merge hotfix

刪除工作分支

git branch -d hotfix

分支的合併

檢視衝突 git status

呼叫視覺化的合併工具解決衝突

git mergetool

分支的管理

檢視各個分支最後一個提交物件的資訊

git branch -v

檢視哪些分支已被併入當前分支

git branch --merged

檢視尚未合併的分支

git branch --no-merged

利用分支進行開發的工作流程

長期分支

特性分支

遠端分支

同步遠端伺服器上資料到本地

git fetch origin 

推送本地分支

git push origin master

在遠端分支上分化出新的分支:

git checkout -b serverfix origin/serverfix

跟蹤遠端分支

git checkout -b sf origin/serverfix

刪除遠端分支

分支的衍合

整合分支方法

git merge
git rebase

從一個特性分支中再分出一個特性分支的歷史

git rebase --onto master server client

git checkout master
git merge server

衍合的風險

一旦分支中的提交物件釋出到公共倉庫,就千萬不要對該分支進行衍合操作。

伺服器上的 Git

協議

Git可以四種主要的傳輸協議進行資料傳輸:本地協議、SSH協議、Git協議和HTTP協議。

在伺服器上部署 Git

git clone --bare my_project my_project.git

把裸倉庫移到伺服器上

未完待續…

相關文章