Git樹是一個(gè)版本控制系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)嗤练,它記錄了項(xiàng)目的歷史變化凡桥。你可以把它想象成一棵樹喷好,樹的每個(gè)節(jié)點(diǎn)代表著一個(gè)提交梗搅,也就是項(xiàng)目的一個(gè)版本无切。每個(gè)提交都包含著對項(xiàng)目文件的一系列修改哆键,以及指向其父節(jié)點(diǎn)(上一個(gè)版本)的鏈接籍嘹。這些提交節(jié)點(diǎn)以及它們之間的鏈接形成了一個(gè)有向無環(huán)圖(DAG)辱士,我們通常把它稱為“提交樹”或“提交圖”听绳。
1.第一次初始化
-
git init
: 初始化一個(gè)新的Git倉庫椅挣。 -
git add .
: 將當(dāng)前目錄下的所有文件添加到暫存區(qū)鼠证。 -
git commit -m ‘first commit’
: 提交暫存區(qū)中的文件到版本庫名惩,并附上提交消息為“first commit”。 -
git remote add origin git@github.com:帳號名/倉庫名.git
: 添加遠(yuǎn)程倉庫稚伍,命名為origin个曙,地址為git@github.com:帳號名/倉庫名.git垦搬。 -
git pull origin master
: 從遠(yuǎn)程倉庫的master分支拉取最新的更改到本地倉庫猴贰。 -
git push origin master
: 將本地提交推送到遠(yuǎn)程倉庫的master分支米绕。選項(xiàng)-f
用于強(qiáng)制推送栅干。 -
git clone
: 克隆一個(gè)遠(yuǎn)程倉庫到本地碱鳞。
2.工作基本操作
-
git checkout master
: 切換到主分支。 -
git fetch origin
: 從遠(yuǎn)程倉庫獲取最新變更填大。 -
git checkout -b dev origin/master
: 基于主分支創(chuàng)建名為dev的新分支俏橘,并將其設(shè)置為跟蹤遠(yuǎn)程的master分支寥掐。 -
git add .
: 將當(dāng)前目錄下的所有修改添加到暫存區(qū)百炬。 -
git commit -m ‘xxx’
: 將暫存區(qū)的文件提交到本地倉庫污它,并附上提交消息為'xxx'。 -
git fetch origin
: 從遠(yuǎn)程倉庫獲取最新變更歇攻。
3.初始化倉庫
git init
4.查看倉庫當(dāng)前狀態(tài)
git status
5.文件相關(guān)操作
1) 將文件添加到倉庫:
-
git add 文件名
: 將工作區(qū)的某個(gè)文件添加到暫存區(qū)。 -
git add .
: 將當(dāng)前工作區(qū)的所有文件都加入暫存區(qū)屡穗。 -
git add -u
: 添加所有被跟蹤的文件中被修改或刪除的文件信息到暫存區(qū)村砂,不處理未跟蹤的文件箍镜。 -
git add -A
: 添加所有被跟蹤的文件中被修改或刪除的文件信息到暫存區(qū),包括未跟蹤的文件手销。 -
git add -i
: 進(jìn)入交互界面模式锋拖,按需添加文件到緩存區(qū)兽埃。
2)將暫存區(qū)文件提交到本地倉庫:
-
git commit -m “提交說明”
將暫存區(qū)內(nèi)容提交到本地倉庫 -
git commit -a -m “提交說明”
跳過緩存區(qū)操作柄错,直接把工作區(qū)內(nèi)容提交到本地倉庫
3)比較文件異同
-
git diff
: 比較工作區(qū)與暫存區(qū)的差異售貌。 -
git diff 分支名
: 比較工作區(qū)與指定分支的差異,遠(yuǎn)程分支使用remotes/origin/分支名
表示恒削。 -
git diff HEAD
: 比較工作區(qū)與最新提交的內(nèi)容的差異蔓同。 -
git diff 提交id 文件路徑
: 比較工作區(qū)某文件當(dāng)前版本與歷史版本的差異斑粱,提交id是目標(biāo)版本的標(biāo)識则北。 -
git diff –stage
: 比較工作區(qū)文件與上次提交的差異(1.6版本前用–cached
)尚揣。 -
git diff 版本TAG
: 比較從某個(gè)版本后的所有改動內(nèi)容娜庇。 -
git diff 分支A 分支B
: 比較分支A和分支B之間的差異,也支持比較兩個(gè)TAG匕得。 -
git diff 分支A…分支B
: 比較兩分支在分叉后各自的改動汁掠。
另外:如果只想統(tǒng)計(jì)哪些文件被改動,多少行被改動乞榨,可以添加 –stat 參數(shù)
6.查看歷史記錄
-
git log
: 查看所有提交記錄,包括SHA-A校驗(yàn)和态秧、作者名稱愤诱、郵箱淫半、提交時(shí)間和提交說明。 -
git log -p -次數(shù)
: 查看最近指定次數(shù)的提交記錄对人,并顯示每次提交的詳細(xì)內(nèi)容變更。 -
git log --stat
: 簡略顯示每次提交的內(nèi)容更改。 -
git log --name-only
: 僅顯示已修改的文件清單咱台。 -
git log --name-status
: 顯示新增表鳍、修改譬圣、刪除的文件清單维哈。 -
git log --oneline
: 讓提交記錄以精簡的一行輸出。 -
git log --graph --all --oneline
: 圖形展示分支的合并歷史罩润,以及所有提交記錄的一行輸出默伍。 -
git log --author=作者
: 查詢指定作者的提交記錄付枫。與grep同時(shí)使用需要添加一個(gè)--all-match
參數(shù)。 -
git log --grep=過濾信息
: 列出提交信息中包含指定過濾信息的提交記錄衅疙。 -
git log -S查詢內(nèi)容
: 列出提交記錄中引入或刪除指定內(nèi)容的提交。S和查詢內(nèi)容之間沒有空格绩郎。 -
git log fileName
: 查看某文件的修改記錄潘鲫。
7.代碼回滾
-
git reset HEAD^
: 將當(dāng)前HEAD指向的版本回退到上次提交的版本,但保留工作區(qū)和暫存區(qū)的修改肋杖。 -
git reset HEAD^^
: 將當(dāng)前HEAD指向的版本回退到上上次提交的版本溉仑,以此類推,或者使用~
后跟次數(shù)指定回退的版本數(shù)状植。 -
git reflog
: 查看引用日志浊竟,即查看當(dāng)前倉庫的操作記錄,包括HEAD的變動津畸。 -
git reset --hard 版本號
: 將當(dāng)前HEAD指向的版本回退到指定的版本號振定,同時(shí)重置暫存區(qū)和工作區(qū)。選項(xiàng)--soft
表示只改變HEAD指針指向肉拓,不改變暫存區(qū)和工作區(qū)后频;選項(xiàng)--mixed
表示修改HEAD指針指向,暫存區(qū)內(nèi)容丟失帝簇,但工作區(qū)不變徘郭;選項(xiàng)--hard
表示修改HEAD指針指向靠益,暫存區(qū)內(nèi)容丟失,工作區(qū)恢復(fù)至指定版本狀態(tài)残揉。
8.版本庫相關(guān)操作
-
git rm 文件名
: 從版本庫中刪除指定文件胧后,并將刪除操作添加到暫存區(qū)。 -
git rm -r --cached folder
: 遞歸地刪除 folder 文件夾及其所有內(nèi)容的跟蹤記錄抱环,但不會刪除實(shí)際的文件壳快。 -
git checkout -- 文件名
: 將版本庫中的文件替換工作區(qū)的文件,即撤銷對工作區(qū)文件的修改镇草,恢復(fù)到最近一次提交的狀態(tài)眶痰。
9.遠(yuǎn)程倉庫相關(guān)操作
同步遠(yuǎn)程倉庫:
git push -u origin master
將本地的master分支內(nèi)容推送到遠(yuǎn)程倉庫origin,并建立本地master分支與遠(yuǎn)程master分支的關(guān)聯(lián)梯啤。本地倉庫內(nèi)容推送到遠(yuǎn)程倉庫:
git remote add origin git@github.com:帳號名/倉庫名.git
將本地倉庫關(guān)聯(lián)到遠(yuǎn)程倉庫竖伯,命名為origin,地址為git@github.com:帳號名/倉庫名.git因宇。從遠(yuǎn)程倉庫克隆項(xiàng)目到本地:
git clone git@github.com:git帳號名/倉庫名.git
從遠(yuǎn)程倉庫克隆項(xiàng)目到本地七婴。查看遠(yuǎn)程庫信息:
git remote
查看當(dāng)前倉庫配置的遠(yuǎn)程倉庫信息。-
拉取遠(yuǎn)程分支到本地倉庫:
git checkout -b 本地分支 遠(yuǎn)程分支 # 會在本地新建分支察滑,并自動切換到該分支 git fetch origin 遠(yuǎn)程分支:本地分支 # 會在本地新建分支打厘,但不會自動切換,還需checkout git branch --set-upstream 本地分支 遠(yuǎn)程分支 # 建立本地分支與遠(yuǎn)程分支的鏈接
同步遠(yuǎn)程倉庫更新:git fetch origin master
從遠(yuǎn)程倉庫origin的master分支獲取最新變更贺辰,但不合并到當(dāng)前分支户盯。
10.分支相關(guān)操作
-
git checkout -b dev
: 創(chuàng)建并切換到名為dev的新分支。 -
git branch dev
: 創(chuàng)建名為dev的新分支饲化,但不切換到該分支莽鸭。 -
git checkout dev
: 切換到名為dev的分支。 -
git branch
: 查看所有分支滓侍。
合并分支:
-
git merge dev
: 將名為dev的分支合并到當(dāng)前分支蒋川。這種合并會產(chǎn)生一個(gè)新的合并提交牲芋,并且合并后的歷史記錄會顯示分支的合并情況撩笆。 -
git merge --no-ff -m “merge with no-ff” dev
: 使用普通模式合并名為dev的分支到當(dāng)前分支。選項(xiàng)--no-ff
表示禁用快速合并(Fast-forward)缸浦,這樣合并后的歷史記錄中會保留分支的信息夕冲,能夠清晰地看出曾經(jīng)進(jìn)行過合并。
刪除分支:
git branch -d dev
查看分支合并圖:
git log –graph –pretty=oneline –abbrev-commit
11.git相關(guān)配置
安裝完Git后第一件要做的事裂逐,設(shè)置用戶信息(global可換成local在單獨(dú)項(xiàng)目生效):
-
git config --global user.name “用戶名”
: 設(shè)置全局Git用戶名為“用戶名”歹鱼。 -
git config --global user.email “用戶郵箱”
: 設(shè)置全局Git用戶郵箱為“用戶郵箱”。 -
git config --global user.name
: 查看全局Git用戶名是否配置成功卜高。 -
git config --global user.email
: 查看全局Git用戶郵箱是否配置成功弥姻。
其他配置相關(guān):
-
git config --global --list
: 查看全局設(shè)置相關(guān)參數(shù)列表南片。 -
git config --local --list
: 查看本地設(shè)置相關(guān)參數(shù)列表。 -
git config --system --list
: 查看系統(tǒng)配置參數(shù)列表庭敦。 -
git config --list
: 查看所有Git的配置疼进,包括全局、本地和系統(tǒng)級別的配置秧廉。 -
git config --global color.ui true
: 設(shè)置全局Git顏色顯示為true伞广,即啟用Git相關(guān)顏色顯示。
13.撤消某次提交
-
git revert HEAD
: 撤銷最近的一個(gè)提交疼电,并創(chuàng)建一個(gè)新的提交來反轉(zhuǎn)該提交引入的更改嚼锄。 -
git revert 版本號
: 撤銷指定版本號的提交,并創(chuàng)建一個(gè)新的提交來反轉(zhuǎn)該提交引入的更改蔽豺。
14.標(biāo)簽
-
git tag 標(biāo)簽
: 在當(dāng)前HEAD指向的提交上打上標(biāo)簽区丑。 -
git tag
: 顯示所有標(biāo)簽。 -
git tag 標(biāo)簽 版本號
: 給指定的commit版本添加標(biāo)簽修陡。 -
git show 標(biāo)簽
: 顯示指定標(biāo)簽的詳細(xì)信息刊苍。
15.clean
-
git clean
: 命令可以用來刪除當(dāng)前目錄下沒有被 Git 管理的文件,包括編譯生成的文件濒析、臨時(shí)文件等不需要的文件正什,提高代碼倉庫的整潔性。命令默認(rèn)不會刪除目錄号杏,只會刪除文件婴氮。如果要?jiǎng)h除目錄,需要加上 -d 參數(shù)盾致。
-git clean -n
: 查看刪除文件列表
-git clean -f -x
: 命令來強(qiáng)制刪除主经。