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
把裸倉庫移到服務器上
未完待續...