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
url
分ssh
和https
兩種,推薦使用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 |
使用其他格式顯示歷史提交資訊。可用的選項包括 oneline ,short ,full ,fuller 和 format (後跟指定格式)。 |
--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
把裸倉庫移到伺服器上
未完待續…