Pro Git 學習筆記

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

把裸倉庫移到服務器上

未完待續...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章