柚子快報(bào)激活碼778899分享:Git help 官方命令詳解
柚子快報(bào)激活碼778899分享:Git help 官方命令詳解
1)git --help翻譯文檔
1.help文檔
win+R輸入cmd打開(kāi)命令行界面
git -h 顯示幫助信息
usage: git [-v | --version] [-h | --help] [-C
???????????[--exec-path[=
???????????[-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
???????????[--git-dir=
???????????[--super-prefix=
???????????
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
???clone ????Clone a repository into a new directory
???init ?????Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
???add ??????Add file contents to the index
???mv ???????Move or rename a file, a directory, or a symlink
???restore ??Restore working tree files
???rm ???????Remove files from the working tree and from the index
examine the history and state (see also: git help revisions)
???bisect ???Use binary search to find the commit that introduced a bug
???diff ?????Show changes between commits, commit and working tree, etc
???grep ?????Print lines matching a pattern
???log ??????Show commit logs
???show ?????Show various types of objects
???status ???Show the working tree status
grow, mark and tweak your common history
???branch ???List, create, or delete branches
???commit ???Record changes to the repository
???merge ????Join two or more development histories together
???rebase ???Reapply commits on top of another base tip
???reset ????Reset current HEAD to the specified state
???switch ???Switch branches
???tag ??????Create, list, delete or verify a tag object signed with GPG
collaborate (see also: git help workflows)
???fetch ????Download objects and refs from another repository
???pull ?????Fetch from and integrate with another repository or a local branch
???push ?????Update remote refs along with associated objects
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.
空文件夾
在 Git 中,空文件夾通常不會(huì)被版本控制系統(tǒng)跟蹤,因?yàn)?Git 只跟蹤文件內(nèi)容的變化。但r是,如果你需要在 Git 倉(cāng)庫(kù)中保留一個(gè)空文件夾,有幾種方法可以實(shí)現(xiàn):
添加占位文件:
在空文件夾中添加一個(gè)占位文件,例如一個(gè)空的 README.md 文件,這樣 Git 就會(huì)跟蹤這個(gè)文件夾。
使用cd /d
使用 mkdir 命令創(chuàng)建新文件夾。例如,要?jiǎng)?chuàng)建一個(gè)名為 new_folder 的文件夾,可以運(yùn)行以下命令:
mkdir new_folder
dir列出當(dāng)前目錄下的文件和文件夾
使用 .gitkeep 文件:
在空文件夾中創(chuàng)建一個(gè)名為 .gitkeep 的文件。這個(gè)文件可以是空的,但是它的存在會(huì)告訴 Git 跟蹤這個(gè)文件夾。
創(chuàng)建新文件并寫入內(nèi)容:
echo "Hello, World!" > newfile.txt
echo. > .gitkeep
使用 .gitignore 文件:
在空文件夾中創(chuàng)建一個(gè) .gitignore 文件,并在其中添加一些規(guī)則來(lái)忽略文件夾中的其他文件,同時(shí)保留 .gitignore 文件本身。例如:
# Ignore everything in this directory
*
# Except this file
!.gitkeep
這樣配置后,Git 會(huì)忽略空文件夾中的所有內(nèi)容,除了 .gitkeep 文件。
如果你已經(jīng)跟蹤了一些文件,并且現(xiàn)在想要通過(guò) .gitignore 來(lái)忽略它們,你需要使用以下命令從 Git 倉(cāng)庫(kù)中移除它們:
git rm --cached
提交 .gitignore 文件:
在項(xiàng)目的根目錄或空文件夾中添加一個(gè) .gitignore 文件,并確保它包含必要的規(guī)則來(lái)避免跟蹤不需要的文件,同時(shí)保留空文件夾。
2.基本用法
-v 或 --version:顯示 git 的版本信息。
-h 或 --help:顯示幫助信息,解釋如何使用 git 命令和它的各個(gè)子命令。
-C
-c
--exec-path[=
--html-path、--man-path、--info-path:分別顯示 Git 的 HTML 文檔、man 頁(yè)面和 info 頁(yè)面的路徑。
-p 或 --paginate:分頁(yè)顯示輸出。當(dāng)使用 --paginate 選項(xiàng)時(shí),你可以使用鍵盤上的按鍵來(lái)導(dǎo)航分頁(yè)輸出。常見(jiàn)的按鍵包括:
空格鍵:向前翻頁(yè) ????b:向后翻頁(yè) ??????q:退出分頁(yè)模式
-P 或 --no-pager:不使用分頁(yè)器顯示輸出。Git 命令的輸出將直接顯示在終端上,而不會(huì)通過(guò)分頁(yè)器。這對(duì)于查看較長(zhǎng)的輸出或在腳本中使用 Git 命令時(shí)非常有用。
--no-replace-objects:禁用替換引用的使用。替換引用是一種 Git 功能,它允許你將一個(gè)提交指向另一個(gè)不同的提交,通常是用于修補(bǔ)錯(cuò)誤或者合并沖突后的提交。
查看未被替換的提交信息:
如果一個(gè)提交 foo 被另一個(gè)提交 bar 替換了,使用 git cat-file commit foo 會(huì)顯示 bar 的信息。要查看原始的 foo 提交信息,可以使用:
git --no-replace-objects cat-file commit foo
這里
--bare:如果與 git init 或 git clone 一起使用,則創(chuàng)建一個(gè)裸倉(cāng)庫(kù)。裸倉(cāng)庫(kù)是一個(gè)不包含工作目錄(working directory)的 Git 倉(cāng)庫(kù),它只包含 .git 目錄,里面保存了所有的版本歷史和引用信息,但沒(méi)有項(xiàng)目文件的實(shí)際內(nèi)容。這種類型的倉(cāng)庫(kù)通常用在服務(wù)器上,作為多個(gè)開(kāi)發(fā)者共享的中央倉(cāng)庫(kù)。
創(chuàng)建裸倉(cāng)庫(kù):
使用 git init --bare 命令可以在指定路徑創(chuàng)建一個(gè)新的裸倉(cāng)庫(kù)
用途:
裸倉(cāng)庫(kù)通常用于服務(wù)器端,作為遠(yuǎn)程倉(cāng)庫(kù)供多個(gè)開(kāi)發(fā)者推送(push)和拉?。╬ull)代碼。它們不用于日常開(kāi)發(fā)工作,因?yàn)樗鼈儧](méi)有工作目錄。
克隆裸倉(cāng)庫(kù):
你可以使用 git clone --bare 命令來(lái)克隆一個(gè)裸倉(cāng)庫(kù),這將創(chuàng)建一個(gè)包含所有分支和標(biāo)簽的裸倉(cāng)庫(kù)副本:
git clone --mirror 會(huì)創(chuàng)建一個(gè)原始倉(cāng)庫(kù)的完全鏡像副本,包括所有數(shù)據(jù)、引用和設(shè)置,而 git clone --bare 僅克隆版本歷史,不包含分支、標(biāo)簽或其他引用。
裸倉(cāng)庫(kù)適用于創(chuàng)建一個(gè)干凈的存儲(chǔ)庫(kù),用于共享和備份目的,而不需要分支和標(biāo)簽的內(nèi)容。
裸倉(cāng)庫(kù)可以用于服務(wù)器上作為中央倉(cāng)庫(kù),供團(tuán)隊(duì)成員進(jìn)行協(xié)作。
--git-dir=
克隆倉(cāng)庫(kù)到特定路徑:
git clone --separate-git-dir=/path/to/custom/.git URL
這條命令會(huì)克隆遠(yuǎn)程倉(cāng)庫(kù) URL 到當(dāng)前目錄,但是 .git 目錄將被創(chuàng)建在 /path/to/custom/.git。
git clone --separate-git-dir=
D:\hehuiyuan\odoo16\custom\git_test\.git ?https://gitee.com/image-star/test.git
初始化一個(gè)新的倉(cāng)庫(kù)并指定 .git 目錄:
git init ??--separate-git-dir=/path/to/custom/.git
這條命令會(huì)在指定路徑初始化一個(gè)新的 Git 倉(cāng)庫(kù)。
在現(xiàn)有目錄中使用不同的 .git 目錄:
cd existing-directory
git --git-dir=../custom/.git status
如果你已經(jīng)在一個(gè)項(xiàng)目目錄中,但是想要使用一個(gè)不同的 .git 目錄,你可以使用這個(gè)命令來(lái)檢查倉(cāng)庫(kù)的狀態(tài)。
--work-tree=
使用 --work-tree 指定工作目錄:如果你想在特定的目錄中工作(即,你想要做 Git 操作的目錄),可以使用 --work-tree 選項(xiàng)。
git --work-tree=/path/to/your/workdir ...
結(jié)合使用 --git-dir 和 --work-tree:你可以在同一個(gè)命令中同時(shí)使用這兩個(gè)選項(xiàng),來(lái)指定 Git 應(yīng)該使用哪個(gè) .git 目錄和工作目錄。
git --git-dir=/path/to/your/.git --work-tree=/path/to/your/workdir status
--namespace=
通常與 git remote add 命令一起使用,用于為遠(yuǎn)程倉(cāng)庫(kù)設(shè)置一個(gè)命名空間。這在管理多個(gè)遠(yuǎn)程倉(cāng)庫(kù)時(shí)非常有用,特別是當(dāng)你需要區(qū)分具有相同倉(cāng)庫(kù)名稱的多個(gè)遠(yuǎn)程倉(cāng)庫(kù)時(shí)。
--super-prefix=
這個(gè)選項(xiàng)設(shè)置了一個(gè)路徑前綴,該前綴是從存儲(chǔ)庫(kù)的根目錄到其上方的路徑。
--config-env=
當(dāng)使用 --config-env 選項(xiàng)時(shí),Git 會(huì)讀取指定的環(huán)境變量 envvar 的值,并將其用作配置項(xiàng) name 的值。如果環(huán)境變量不存在,Git 將使用配置項(xiàng)的默認(rèn)值。
3.常用命令
一、開(kāi)始工作區(qū)
1.init: 初始化一個(gè)新的 Git 倉(cāng)庫(kù)或重新初始化一個(gè)已存在的倉(cāng)庫(kù)。
2.clone: 克隆一個(gè)遠(yuǎn)程倉(cāng)庫(kù)到本地。
二、對(duì)當(dāng)前更改進(jìn)行操作
1.add: 將文件內(nèi)容添加到暫存區(qū)。
1.1添加單個(gè)文件:
git add
1.2添加多個(gè)文件:
git add
或者使用通配符來(lái)添加多個(gè)文件,例如:
git add *.txt
1.3添加所有更改:
使用以下命令可以添加所有更改(包括新文件和修改過(guò)的文件):
git add .
這里的點(diǎn)(.)代表當(dāng)前目錄及其子目錄下的所有更改。
1.4交互式添加:
git add -i或者git add --interactive
這將允許你選擇性地暫存或取消暫存特定的更改。
status: 顯示當(dāng)前工作目錄中已跟蹤和未跟蹤文件的狀態(tài)
update: 更新已存在的文件,將更改添加到索引中。直接回車或者*全選
revert: 撤銷暫存
add: 將未跟蹤的文件添加到索引中。
patch: 允許你對(duì)單個(gè)文件進(jìn)行更細(xì)粒度的控制,可以暫存部分更改。
y - stage this hunk:
選擇 "y"(代表 "yes")將當(dāng)前的代碼塊(hunk)暫存。如果你想保留這個(gè)代碼塊作為下次提交的一部分,就選擇這個(gè)選項(xiàng)。
n - do not stage this hunk:
選擇 "n"(代表 "no")表示不暫存當(dāng)前的代碼塊。如果你想保留這個(gè)代碼塊但不將其作為下次提交的一部分,就選擇這個(gè)選項(xiàng)。
q - quit:
選擇 "q" 退出交互式暫存界面,并且不暫存當(dāng)前代碼塊或之后的所有代碼塊。這通常在你決定不再進(jìn)行任何暫存操作時(shí)使用。
a - stage this hunk and all later hunks in the file:
選擇 "a"(代表 "all")將當(dāng)前代碼塊以及同一文件中的所有后續(xù)代碼塊暫存。如果你認(rèn)為從當(dāng)前代碼塊到文件末尾的所有更改都應(yīng)該包括在下次提交中,就選擇這個(gè)選項(xiàng)。
d - do not stage this hunk or any of the later hunks in the file:
選擇 "d" 表示不暫存當(dāng)前代碼塊或同一文件中的任何后續(xù)代碼塊。這在你決定從當(dāng)前點(diǎn)開(kāi)始不暫存任何更改時(shí)使用。
e - manually edit the current hunk:
選擇 "e" 手動(dòng)編輯當(dāng)前的代碼塊。這允許你查看和修改暫存界面中顯示的更改,或者分割一個(gè)代碼塊為更小的部分,然后選擇暫存或不暫存這些部分。
? - print help:
輸入 "?" 將顯示幫助信息,解釋每個(gè)選項(xiàng)的用途。
diff: 顯示選中文件的更改。
quit: 退出交互式添加模式。
help
status:
使用 status 可以查看當(dāng)前工作目錄中所有更改的概覽,包括新文件、修改過(guò)的文件和刪除的文件,以及它們是否已經(jīng)暫存。
update:
update 用于將工作目錄中的更改添加到暫存區(qū)。如果你選擇這個(gè)選項(xiàng),Git 會(huì)要求你選擇特定的文件或代碼塊(hunks)來(lái)暫存。
revert:
revert 用于撤銷暫存區(qū)中的更改,將暫存區(qū)的更改回退到最后一次提交(HEAD)的狀態(tài)。這不會(huì)改變工作目錄中的文件。
patch:
patch 允許你對(duì)更改進(jìn)行更細(xì)粒度的控制。你可以逐個(gè)代碼塊地選擇是否暫存,這提供了一種選擇性暫存更改的方法。
diff:
使用 diff 可以查看暫存區(qū)(index)與最后一次提交(HEAD)之間的差異。
add untracked:
add untracked 用于將未跟蹤的新文件添加到暫存區(qū)。這不會(huì)改變這些文件的跟蹤狀態(tài),除非你執(zhí)行 git commit。
1.5更新暫存區(qū)
將已跟蹤文件的更改添加到暫存區(qū)(index),但不會(huì)影響未跟蹤的新文件或已刪除的文件。如果你之前已經(jīng)使用 git rm --cached
git add -u
1.6使用補(bǔ)丁
git add -p
這將允許你逐個(gè)審查和選擇哪些更改將被暫存。
y: 選擇 "y"(代表 "yes")將當(dāng)前顯示的補(bǔ)丁添加到暫存區(qū)。
n: 選擇 "n"(代表 "no")跳過(guò)當(dāng)前補(bǔ)丁,不將其添加到暫存區(qū)。
a: 選擇 "a"(代表 "all")將當(dāng)前補(bǔ)丁以及文件中剩余的所有補(bǔ)丁添加到暫存區(qū)。
q: 選擇 "q"(代表 "quit")退出交互式添加模式,不將當(dāng)前或任何剩余的補(bǔ)丁添加到暫存區(qū)。
d: 選擇 "d" 跳過(guò)當(dāng)前補(bǔ)丁,并且不添加文件中剩余的任何補(bǔ)丁到暫存區(qū)。
e: 選擇 "e" 進(jìn)入手動(dòng)編輯模式,允許你對(duì)當(dāng)前補(bǔ)丁進(jìn)行編輯,分割或修改它。
s: 選擇 "s" 將當(dāng)前補(bǔ)丁分割成較小的補(bǔ)丁,然后可以選擇將這些較小的補(bǔ)丁分別添加到暫存區(qū)。
?: 輸入 "?" 顯示交互式添加模式的幫助信息。
1.7添加所有更改,忽略已忽略的文件:
使用以下命令可以添加所有更改,但忽略那些在 .gitignore 中指定的文件:
git add -A
2.mv: 移動(dòng)或重命名文件、目錄或符號(hào)鏈接。
2.1重命名文件
git mv oldname newname
這個(gè)命令將 oldname 文件重命名為 newname,并自動(dòng)記錄這個(gè)更改。
2.2移動(dòng)文件
git mv filename directory/
這個(gè)命令將 filename 移動(dòng)到指定的 directory/ 目錄中。
-v:顯示詳細(xì)的處理過(guò)程。
-f:強(qiáng)制執(zhí)行,即使目標(biāo)文件已經(jīng)存在。
-n:模擬執(zhí)行,不實(shí)際移動(dòng)或重命名文件。
-k:如果目標(biāo)文件存在,保留目標(biāo)文件,不覆蓋。
3.restore: 恢復(fù)工作樹(shù)文件到暫存區(qū)或 HEAD 的狀態(tài)(Git 2.23 版本后引入)。
git restore 命令不會(huì)影響未跟蹤的文件(即從未被添加到 Git 倉(cāng)庫(kù)中的新文件)。如果你想要撤銷對(duì)這些文件的更改,你需要使用 git restore
撤銷對(duì)暫存區(qū)的更改(即已經(jīng)使用 git add 添加但尚未提交的更改),可以使用 git restore --staged
3.1還原文件到最新提交的狀態(tài):
git restore
這個(gè)命令可以將指定文件恢復(fù)到最新的提交狀態(tài),丟棄所有未提交的更改。
3.2還原文件到暫存區(qū)的狀態(tài):
git restore --staged
如果已經(jīng)使用 git add 將文件添加到暫存區(qū),但希望撤銷這些更改,可以使用這個(gè)命令。它將文件恢復(fù)到暫存區(qū)的狀態(tài),但不影響工作目錄中的文件。
3.3還原全部更改:
git restore .
這個(gè)命令將還原所有未提交的更改,包括工作目錄和暫存區(qū)的更改。使用這個(gè)命令要謹(jǐn)慎,因?yàn)樗鼤?huì)清除所有未提交的修改。
3.4還原文件到指定提交的狀態(tài):
git restore --source=
如果想將文件恢復(fù)到特定提交的狀態(tài),可以使用這個(gè)命令。將
獲取提交的哈希值:
使用 git log 命令:q退出
git log 命令會(huì)列出所有提交的哈希值和相關(guān)信息。
使用 git rev-parse HEAD 命令:
這個(gè)命令將返回當(dāng)前 HEAD 指針?biāo)赶虻奶峤坏墓V担串?dāng)前分支的最新提交。
使用 git show 命令:
git show 命令顯示當(dāng)前提交的詳細(xì)信息,包括哈希值。可以通過(guò)指定提交的哈希值來(lái)查看特定提交的詳細(xì)信息。
使用 Git GUI 工具:
如果你更喜歡圖形界面,可以使用 Git GUI 工具,如 SourceTree,通過(guò)搜索提交消息來(lái)獲取提交哈希值。
通過(guò)哈希值查找提交:
一旦你獲得了特定的哈希值,可以使用 git show
4.rm: 從工作區(qū)和暫存區(qū)刪除文件。
git rm 命令本身不是用來(lái)刪除未跟蹤文件的。這個(gè)命令用于從 Git 倉(cāng)庫(kù)中刪除已經(jīng)被跟蹤的文件
4.1刪除單個(gè)文件
git rm
4.2刪除多個(gè)文件
git rm
4.3刪除目錄
如果需要?jiǎng)h除一個(gè)目錄及其所有內(nèi)容,可以使用:
git rm -r
-r 選項(xiàng)告訴 Git 遞歸地刪除目錄及其內(nèi)容。
4.4強(qiáng)制刪除
如果文件已經(jīng)被添加到暫存區(qū),直接刪除文件可能不會(huì)反映到暫存區(qū)。使用 -f(force)選項(xiàng)可以強(qiáng)制從暫存區(qū)刪除文件:
git rm -f
4.5保留文件但刪除其版本控制
使用 --cached 選項(xiàng)可以刪除文件的版本控制,但保留文件在文件系統(tǒng)中:
git rm --cached
這將從暫存區(qū)刪除文件,但不會(huì)刪除工作目錄中的文件??捎胓it add -u 撤銷
4.6使用通配符:
可以使用通配符刪除多個(gè)匹配特定模式的文件:
git rm '*.log'
4.7安靜模式:
使用 -q(quiet)選項(xiàng)可以減少命令的輸出,使命令執(zhí)行更加安靜:
git rm -q
4.8刪除并記錄刪除原因:
使用 -m 選項(xiàng)可以為刪除操作添加一個(gè)刪除信息:
git rm -m "Remove old log file"
4.9刪除后自動(dòng)提交:
使用 --commit 選項(xiàng)可以在刪除文件后立即提交更改:
git rm --commit
使用 git rm 命令可以有效地管理你的項(xiàng)目文件和版本歷史,確保不需要的文件不會(huì)遺留在版本庫(kù)中。記得在刪除文件后執(zhí)行 git commit 來(lái)提交這些更改。
三、檢查歷史和狀態(tài)
1.bisect: 使用二分搜索來(lái)查找引入錯(cuò)誤的提交。
開(kāi)始二分查找:
使用 git bisect start 命令開(kāi)始二分查找過(guò)程。
標(biāo)記已知狀態(tài):
使用 git bisect bad 命令標(biāo)記當(dāng)前的提交(HEAD)為引入錯(cuò)誤的提交。
使用 git bisect good
自動(dòng)跳轉(zhuǎn)到中間提交:
Git 會(huì)自動(dòng)跳轉(zhuǎn)到兩個(gè)已知狀態(tài)之間的中間提交。
測(cè)試當(dāng)前提交:
檢查當(dāng)前跳轉(zhuǎn)到的提交是否存在問(wèn)題。
標(biāo)記測(cè)試結(jié)果:
如果當(dāng)前提交存在問(wèn)題,使用 git bisect bad 命令告訴 Git。
如果當(dāng)前提交沒(méi)有問(wèn)題,使用 git bisect good 命令告訴 Git。
重復(fù)測(cè)試和標(biāo)記:
重復(fù)步驟 4 和 5,Git 會(huì)繼續(xù)自動(dòng)跳轉(zhuǎn)到下一個(gè)中間提交,直到找到引入問(wèn)題的最早提交。
結(jié)束二分查找:
使用 git bisect reset 命令結(jié)束二分查找過(guò)程,并返回到開(kāi)始查找之前的狀態(tài)。
查看結(jié)果:當(dāng)二分查找完成后,Git 會(huì)告訴你引入問(wèn)題的確切提交。
2.diff: 顯示提交之間、提交和工作樹(shù)之間的更改。
2.1查看工作目錄與暫存區(qū)的差異
git diff
這個(gè)命令顯示了工作目錄中已修改但尚未暫存的文件差異,不包括未跟蹤文件
2.2查看暫存區(qū)與最近一次提交的差異
git diff --cached使用 git diff --staged,這將顯示已經(jīng)暫存但尚未提交的更改。
2.3查看與上一次提交的差異
git diff HEAD
2.4查看所有文件的差異,包括未跟蹤的文件
git diff --all 或者git diff -a
這個(gè)命令顯示了所有更改的差異,包括新文件和刪除的文件。
3.grep: 打印匹配模式的行。
允許你在 Git 倉(cāng)庫(kù)的歷史記錄中搜索文本模式。這個(gè)命令可以在整個(gè)項(xiàng)目的任何提交中搜索字符串、正則表達(dá)式等,非常適用于追蹤代碼中的特定用法或查找特定代碼片段。
搜索整個(gè)倉(cāng)庫(kù):
使用 git grep "pattern" 可以在整個(gè)倉(cāng)庫(kù)的所有文件中搜索包含 "pattern" 的行。
搜索特定文件:
你可以指定一個(gè)文件名來(lái)在該文件中搜索 "pattern":
git grep "pattern"
搜索特定目錄:
使用 -- 來(lái)分隔目錄路徑和搜索模式,然后在指定目錄下搜索 "pattern":
git grep "pattern" --
搜索特定提交:
使用 git grep 加上提交的哈希值可以搜索特定提交中的 "pattern":
git grep "pattern"
使用正則表達(dá)式:
git grep 支持正則表達(dá)式搜索,只需確保將正則表達(dá)式用引號(hào)括起來(lái):
git grep 'regular expression'
忽略大小寫:
使用 -i 選項(xiàng)可以進(jìn)行不區(qū)分大小寫的搜索:
git grep -i "pattern"
只顯示行數(shù):
使用 -n 選項(xiàng)可以顯示匹配行的行號(hào):
git grep -n "pattern"
只顯示匹配的行:
使用 -o 選項(xiàng)可以僅顯示匹配的部分,而不是整個(gè)文件的內(nèi)容:
git grep -o "pattern"
擴(kuò)展的正則表達(dá)式:
使用 -E 選項(xiàng)可以啟用擴(kuò)展的正則表達(dá)式(ERE):
git grep -E 'extended regular expression'
搜索文件名:
使用 --name-only 選項(xiàng)可以搜索包含特定模式的文件名:
git grep --name-only "pattern"
忽略二進(jìn)制文件:
使用 --skip-binary 選項(xiàng)可以忽略二進(jìn)制文件,防止在搜索時(shí)損壞輸出:
git grep --skip-binary "pattern"
使用顏色:
使用 --color 選項(xiàng)可以高亮顯示匹配的文本:
git grep --color "pattern"
4.log: 顯示提交日志。
顯示所有提交記錄:
git log
限制顯示的提交數(shù)量:
使用 -
git log -3
搜索提交信息:
使用 --grep=
git log --grep="fix bug"
顯示簡(jiǎn)化的提交信息:
使用 --oneline 可以將每個(gè)提交壓縮成單行顯示:
git log --oneline
顯示圖形化的提交歷史:
使用 --graph 可以顯示 ASCII 圖形化的提交歷史:
git log --graph
顯示某個(gè)文件或目錄的提交歷史:
使用 --
git log -- README.md
顯示每個(gè)提交的 diffs:
使用 -p 可以顯示每個(gè)提交的差異(diffs):
git log -p
顯示某個(gè)作者的提交:
使用 --author=
git log --author="John Doe"
顯示統(tǒng)計(jì)信息:
使用 --stat 可以顯示每個(gè)提交的文件修改統(tǒng)計(jì)信息:
git log --stat
顯示每個(gè)提交的提交者和日期:
使用 --decorate 可以顯示每個(gè)提交的額外信息,如提交者和日期:
git log --decorate
顯示相對(duì)日期:
使用 --relative-date 可以顯示相對(duì)日期而不是完整日期:
git log --relative-date
顯示所有引用(分支、標(biāo)簽)的引用日志:
使用 --all 可以顯示所有引用的日志,不僅限于當(dāng)前分支:
git log --all
5.show: 顯示各種類型的對(duì)象(如提交、樹(shù)、blob)。
包括提交(commit)、標(biāo)簽(tag)、分支(branch)或者 blob。它通常用來(lái)查看這些對(duì)象的詳細(xì)內(nèi)容。
顯示特定提交的信息:
git show
這里的
顯示提交的差異:
使用 -p 選項(xiàng)可以顯示特定提交的補(bǔ)?。床町?diff):
git show -p
顯示標(biāo)簽對(duì)象:
git show
這將顯示與標(biāo)簽關(guān)聯(lián)的提交信息。
顯示分支的最后一次提交:
git show
這將顯示該分支最后一次提交的詳細(xì)信息。
顯示差異的統(tǒng)計(jì)信息:
使用 --stat 選項(xiàng)可以顯示差異統(tǒng)計(jì),展示文件的增改情況:
git show --stat
顯示單行提交信息:
使用 --oneline 可以將提交信息顯示為單行:
git show --oneline
顯示提交的摘要:
使用 --summary 可以顯示每個(gè)文件的更改摘要:
git show --summary
顯示特定行數(shù)的上下文:
使用 -U 可以指定顯示差異時(shí)的上下文行數(shù):
git show -U7
顯示提交的元數(shù)據(jù):
使用 --pretty 可以指定輸出格式,例如使用 oneline、short、medium、full、fuller 或 raw:
git show --pretty=fuller
顯示 blob 的內(nèi)容:
如果你有一個(gè) blob 的哈希值,可以使用 git show 來(lái)顯示它的內(nèi)容:
git show
顯示樹(shù)的目錄結(jié)構(gòu):
對(duì)于樹(shù)對(duì)象,git show 可以列出樹(shù)中所有文件的目錄結(jié)構(gòu):
git show
顯示特定文件在特定提交時(shí)的內(nèi)容:
使用 git show 可以查看特定文件在某個(gè)提交時(shí)的樣子:
git show
6.status: 顯示工作樹(shù)的狀態(tài)。
顯示了當(dāng)前工作目錄與暫存區(qū)(index)的狀態(tài)。它會(huì)列出哪些文件被修改了、哪些文件已經(jīng)暫存了、哪些文件還沒(méi)有被跟蹤(untracked),以及是否有文件被刪除了。
查看所有更改:
執(zhí)行 git status 將顯示所有未暫存和已暫存的更改。
git?status
查看簡(jiǎn)短的狀態(tài):
使用 -s 選項(xiàng)可以僅顯示一個(gè)簡(jiǎn)短的狀態(tài)摘要。
git status -s
查看未暫存的更改:
使用 -uno 選項(xiàng)可以查看未暫存的更改,包括新文件和修改過(guò)的文件。
git status -uno
查看已暫存的更改:
使用 --porcelain 選項(xiàng)可以以一種易于腳本解析的格式顯示已暫存的更改。
git status --porcelain
查看忽略的文件:
使用 --ignore-submodules 選項(xiàng)可以顯示子模塊的更改狀態(tài)。
git status --ignore-submodules
查看分支狀態(tài):
git status 還會(huì)顯示當(dāng)前所在的分支名稱,以及與遠(yuǎn)程分支的差異(如果有的話)。
查看跟蹤的刪除文件:
使用 -v 或 --verbose 選項(xiàng)可以顯示更詳細(xì)的信息,包括已經(jīng)被 Git 跟蹤但在工作目錄中已被刪除的文件。
git status -v
檢查未跟蹤的文件:
git status 會(huì)列出所有未跟蹤的新文件,你可以使用 git add 將它們暫存以包含在下次提交中。
檢查沖突:
如果在合并過(guò)程中存在沖突,git status 會(huì)列出存在沖突的文件,并指示你需要手動(dòng)解決這些沖突。
四、修改歷史
1.branch: 列出、創(chuàng)建或刪除分支。
1.01列出所有本地分支
執(zhí)行 git branch 會(huì)顯示倉(cāng)庫(kù)中所有的本地分支。當(dāng)前分支前面會(huì)有一個(gè)星號(hào)(*)。
git branch
1.02創(chuàng)建新分支
使用 -b 選項(xiàng)可以創(chuàng)建一個(gè)新的分支。
1.03刪除分支
使用 -d 選項(xiàng)可以刪除一個(gè)已經(jīng)合并到當(dāng)前分支的分支。
1.04強(qiáng)制刪除分支
如果分支上還有未合并的更改,可以使用 D 選項(xiàng)強(qiáng)制刪除分支。
git branch -D branch-to-delete
1.05切換到分支
使用 git checkout 命令可以切換到指定的分支。
git checkout branch-name(git switch branch-name)
1.06查看遠(yuǎn)程分支
使用 -r 選項(xiàng)可以列出所有的遠(yuǎn)程分支。
git branch -r
1.07查看本地和遠(yuǎn)程分支
使用 -a 選項(xiàng)可以列出所有本地和遠(yuǎn)程分支。
git branch -a
1.08設(shè)置跟蹤分支
當(dāng)創(chuàng)建新分支時(shí),可以使用 -u 或 --set-upstream-to 選項(xiàng)設(shè)置上游(tracking)分支。
git branch -u origin/branch-name new-branch
git branch --set-upstream-to=
1.09查看分支的提交記錄
使用 --merged 可以列出所有已經(jīng)合并到當(dāng)前分支的分支。
git branch --merged
1.10查看未合并的分支
使用 --no-merged 可以列出所有尚未合并到當(dāng)前分支的分支。
git branch --no-merged
1.11排序分支
使用 --sort 選項(xiàng)可以根據(jù)不同的標(biāo)準(zhǔn)對(duì)分支進(jìn)行排序,例如日期或提交者。
git branch --sort=-committerdate
1.12列出更多分支信息
使用 -vv 選項(xiàng)可以顯示每個(gè)分支的上游分支和最后提交信息。
git branch -vv
2.commit: 記錄對(duì)倉(cāng)庫(kù)的更改。
git commit 是版本控制工作流程中的一個(gè)基本環(huán)節(jié),它幫助你記錄代碼的變更點(diǎn),并為這些變更附上說(shuō)明,以便于未來(lái)的代碼審查和歷史跟蹤
feat: 新增功能
fix: 修復(fù)bug
refactor: 重構(gòu)代碼
pert: 性能優(yōu)化
2.1提交暫存區(qū)的更改
使用 -m 選項(xiàng)后跟提交信息,可以提交暫存區(qū)的更改:
git commit -m "Your commit message"
2.2提交所有更改
使用 -a 選項(xiàng)可以自動(dòng)暫存所有已跟蹤的文件的更改,然后提交:
git commit -a -m "Commit message for all changes"
2.3修改最后一次提交
如果你想要修改最后一次提交,可以使用 --amend 選項(xiàng):
git commit --amend -m "Updated commit message"
2.4使用編輯器寫提交信息
如果你沒(méi)有使用 -m 選項(xiàng),Git 會(huì)打開(kāi)默認(rèn)的文本編輯器讓你寫提交信息。
git commit
2.5禁用鉤子
使用 --no-verify 選項(xiàng)可以禁用所有提交前鉤子(pre-commit hooks):
git commit --no-verify -m "Commit message"
2.6保留合并提交
使用 --no-edit 選項(xiàng)可以保留合并提交的原始提交信息:
git commit --no-edit
2.7使用簽名的提交
使用 git commit 與 -s 選項(xiàng)可以創(chuàng)建一個(gè) GPG 簽名的提交:
git commit -s -m "Signed commit message"
3.merge: 將兩個(gè)或多個(gè)開(kāi)發(fā)歷史合并在一起。
3.1合并指定分支
將指定分支的更改合并到當(dāng)前分支:
git merge feature-branch
3.2合并遠(yuǎn)程分支
將遠(yuǎn)程分支的更改合并到當(dāng)前分支:
git merge origin/feature-branch
3.3解決合并沖突
如果合并過(guò)程中出現(xiàn)沖突,Git 會(huì)停止合并并讓你手動(dòng)解決這些沖突。解決沖突后,你可以使用 git add 將解決后的文件暫存,然后提交合并:
git add <解決沖突后的文件>
git commit
3.4快進(jìn)合并
如果沒(méi)有沖突,Git 可能會(huì)執(zhí)行一個(gè)快進(jìn)合并,這意味著直接將當(dāng)前分支的指針移動(dòng)到合并分支的最新提交。
3.5合并提交
即使有多個(gè)提交,Git 也可能將它們合并為一個(gè)單一的提交,稱為合并提交(merge commit)。你可以使用 --no-ff 選項(xiàng)來(lái)確保即使在快進(jìn)情況下也創(chuàng)建一個(gè)合并提交:
git merge --no-ff feature-branch
3.6合并時(shí)的提交信息
使用 -m 選項(xiàng)可以為合并提交指定一個(gè)特定的提交信息:
git merge -m "Merge feature-branch into main" feature-branch
3.7合并策略
使用 -s 選項(xiàng)可以指定不同的合并策略,例如 ours、theirs 或自定義策略:
git merge -s ours main
3.8查看合并的基礎(chǔ)提交
使用 git merge-base 可以查看兩個(gè)分支的共同祖先:
git merge-base main feature-branch
3.9撤銷合并
如果你需要撤銷一個(gè)合并操作,可以使用 git revert 命令。
撤銷最后一次提交:
git revert HEAD
這會(huì)撤銷最后一次提交所做的所有更改。
撤銷特定提交:
git revert
將
撤銷合并提交:
合并提交有兩個(gè)父提交,使用 git revert 時(shí),Git 會(huì)嘗試選擇主線并逆向合并。如果你想要逆向兩個(gè)父提交中的特定一邊,可以使用 -m 選項(xiàng):
git revert -m
4.rebase: 在另一個(gè)基礎(chǔ)提交之上重新應(yīng)用提交。
將一個(gè)分支的更改重新應(yīng)用到另一個(gè)分支上,從而創(chuàng)建一個(gè)更干凈、線性的提交歷史。這通常用于將特性分支的更改整合到更新后的主分支上。
開(kāi)始變基:
將當(dāng)前分支的更改變基到指定分支上:
git rebase main
交互式變基:
使用 -i 選項(xiàng)可以以交互式模式進(jìn)行變基,允許你編輯、重新排序、合并或刪除提交:
git rebase -i main
繼續(xù)變基:
如果在變基過(guò)程中遇到?jīng)_突,解決了沖突并暫存更改后,使用 git rebase --continue 繼續(xù)變基:
git rebase --continue
變基時(shí)解決沖突:
如果變基過(guò)程中出現(xiàn)沖突,Git 會(huì)停止變基并讓你手動(dòng)解決這些沖突。解決沖突后,使用 git add 將解決后的文件暫存,然后執(zhí)行 git rebase --continue。
取消變基:
如果在變基過(guò)程中遇到問(wèn)題,可以使用 git rebase --abort 取消當(dāng)前的變基操作,回到變基前的狀態(tài):
git rebase --abort
變基到特定提交:
使用 git rebase 可以指定一個(gè)特定的提交而不是分支,將當(dāng)前分支從該提交開(kāi)始的更改變基:
git rebase
自動(dòng)變基:
使用 --autosquash 選項(xiàng)可以在交互式變基時(shí)自動(dòng)合并一系列小的提交:
git rebase -i --autosquash
變基時(shí)保持提交者日期:
使用 --keep-empty 選項(xiàng)可以在變基時(shí)保留空提交,這可以保留提交者日期:
git rebase --keep-empty main
變基多個(gè)分支:
使用 git rebase 可以依次將多個(gè)分支變基到另一個(gè)分支:
git rebase main feature1 feature2
變基時(shí)的提交信息:
使用 -m 或 --rebase-merges 選項(xiàng)可以在變基合并提交時(shí)保留原始的合并提交信息:
git rebase -m main
5.reset: 重置當(dāng)前 HEAD 到指定狀態(tài)。
git reset 命令在 Git 中用于將當(dāng)前分支的 HEAD 指針移動(dòng)到指定的狀態(tài),但不會(huì)影響工作目錄中的文件。這個(gè)命令常用于撤銷提交、修改提交或重新整理提交歷史。
5.1重置當(dāng)前分支到特定提交
使用
git reset
5.2混合重置(默認(rèn))
--mixed 是默認(rèn)選項(xiàng),它會(huì)重置 HEAD、索引區(qū)(暫存區(qū))和工作目錄:
git reset --mixed
5.3軟重置:
使用 --soft 選項(xiàng)重置 HEAD 和索引區(qū),但不更改工作目錄中的文件:
git reset --soft
這將取消提交,但不更改工作目錄,使得更改可以重新提交。
5.4硬重置
使用 --hard 選項(xiàng)重置 HEAD、索引區(qū)和工作目錄,清除所有未提交的更改:
git reset --hard
這將撤銷提交及其所有更改,使用時(shí)要小心,因?yàn)樗鼤?huì)丟失所有未提交的更改。
5.5重置HEAD但保留索引區(qū)
使用 --keep 選項(xiàng)重置 HEAD 但不更改索引區(qū):
git reset --keep
5.6移動(dòng)HEAD但不更新索引區(qū)
使用 --no-commit 選項(xiàng)移動(dòng) HEAD 但不創(chuàng)建一個(gè)新的提交:
git reset --no-commit
5.7重置到上一個(gè)提交
使用 HEAD^ 表示當(dāng)前 HEAD 的父提交:
git reset --mixed HEAD^
5.8重置到上上個(gè)提交
使用 HEAD~2 表示當(dāng)前 HEAD 的兩個(gè)父提交:
git reset --mixed HEAD~2
5.9重置文件:
如果你想重置特定的文件而不是整個(gè)倉(cāng)庫(kù),可以在命令中指定文件:
git reset --mixed
重置到遠(yuǎn)程分支
如果你想將本地分支重置到遠(yuǎn)程分支的狀態(tài):
git reset --hard origin/main
6.switch: 切換分支(checkout)。
6.1切換到現(xiàn)有分支
使用 git switch 命令可以直接切換到一個(gè)已存在的分支:
git switch branch-name
6.2創(chuàng)建并切換到新分支
使用 -c 選項(xiàng)可以創(chuàng)建一個(gè)新的分支并立即切換到該分支:
git switch -c new-branch
6.3切換到遠(yuǎn)程分支
創(chuàng)建并切換到遠(yuǎn)程分支的本地副本:
git checkout -b
6.4創(chuàng)建并切換到新分支,并設(shè)置上游分支
使用 --track 選項(xiàng)或 -u 可以創(chuàng)建一個(gè)新的分支并設(shè)置其跟蹤遠(yuǎn)程分支:
git switch -c new-branch --track origin/branch-name
6.5切換到上一個(gè)分支
使用 - 可以快速切換回上一個(gè)分支:
git switch -
6.6查看所有分支
使用 git branch 命令可以查看所有分支的列表,包括本地和遠(yuǎn)程分支。
6.7刪除分支
雖然 git switch 本身不用于刪除分支,但你可以在使用 git switch 切換分支后,使用 git branch -d 刪除當(dāng)前不在的分支。
6.8重命名分支:
使用 git branch -m 可以重命名分支,然后使用 git switch 切換到重命名后的分支。
7.tag: 創(chuàng)建、列出、刪除或驗(yàn)證 GPG 簽名的標(biāo)簽對(duì)象。
列出所有標(biāo)簽:
不帶任何參數(shù)執(zhí)行 git tag 會(huì)列出倉(cāng)庫(kù)中所有的標(biāo)簽。
git tag
創(chuàng)建新標(biāo)簽:
使用 a 選項(xiàng)可以創(chuàng)建一個(gè)新的附注標(biāo)簽(annotated tag),并允許你編輯標(biāo)簽信息:
git tag -a v1.0.0
創(chuàng)建輕量級(jí)標(biāo)簽:
如果不使用 a 選項(xiàng),Git 將創(chuàng)建一個(gè)輕量級(jí)標(biāo)簽,它沒(méi)有額外的元數(shù)據(jù):
git tag v1.0.0
查看標(biāo)簽信息:
使用 git show 可以查看標(biāo)簽的詳細(xì)信息,包括標(biāo)簽消息和指向的提交:
git show v1.0.0
刪除標(biāo)簽:
使用 d 選項(xiàng)可以刪除一個(gè)標(biāo)簽:
git tag -d v1.0.0
推送標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù):
使用 git push 可以推送本地標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù):
git push origin v1.0.0
或者推送所有標(biāo)簽:
git push origin --tags
刪除遠(yuǎn)程標(biāo)簽:
使用 git push 與 --delete 選項(xiàng)可以刪除遠(yuǎn)程倉(cāng)庫(kù)中的標(biāo)簽:
git push origin --delete tag v1.0.0
檢出標(biāo)簽對(duì)應(yīng)的提交:
使用 git checkout 可以切換到標(biāo)簽對(duì)應(yīng)的提交:
git checkout v1.0.0
搜索標(biāo)簽:
使用 -l 選項(xiàng)和搜索模式可以搜索匹配特定模式的標(biāo)簽:
git tag -l 'v1.0'
列出標(biāo)簽的詳細(xì)信息:
使用 -n 選項(xiàng)和 --contains 可以列出所有包含特定提交的標(biāo)簽:
git tag --contains
驗(yàn)證標(biāo)簽:
使用 git tag -v 可以驗(yàn)證標(biāo)簽的 GPG 簽名:
git tag -v v1.0.0
五、協(xié)作
1.fetch: 從另一個(gè)倉(cāng)庫(kù)下載對(duì)象和引用。
獲取遠(yuǎn)程倉(cāng)庫(kù)的最新?tīng)顟B(tài):
執(zhí)行 git fetch 可以獲取遠(yuǎn)程倉(cāng)庫(kù)(通常是 origin)的最新?tīng)顟B(tài),包括所有分支的最新提交。
git fetch
指定遠(yuǎn)程倉(cāng)庫(kù):
使用 -u 或 --update 選項(xiàng)可以指定遠(yuǎn)程倉(cāng)庫(kù),并更新本地的遠(yuǎn)程跟蹤分支。
git fetch -u origin
獲取特定分支:
可以指定一個(gè)特定的遠(yuǎn)程分支進(jìn)行獲取,例如:
git fetch origin main
所有遠(yuǎn)程倉(cāng)庫(kù):
使用 --all 選項(xiàng)可以獲取所有已知遠(yuǎn)程倉(cāng)庫(kù)的最新?tīng)顟B(tài)。
git fetch --all
強(qiáng)制更新遠(yuǎn)程跟蹤分支:
使用 --force 或 -f 選項(xiàng)可以強(qiáng)制更新遠(yuǎn)程跟蹤分支,即使有沖突。
git fetch --force
獲取并合并:
使用 git pull 命令可以獲取遠(yuǎn)程分支的更改并自動(dòng)合并到當(dāng)前分支。git fetch 命令本身不會(huì)合并更改,但可以與 git merge 配合使用來(lái)合并遠(yuǎn)程分支的更改。
git fetch
git merge origin/main
獲取并重置當(dāng)前分支:
使用 --reset 選項(xiàng)可以在獲取遠(yuǎn)程分支后將當(dāng)前分支重置為遠(yuǎn)程分支的狀態(tài)。
git fetch --reset
獲取并自動(dòng)清理:
使用 --tags 選項(xiàng)可以在獲取遠(yuǎn)程分支的同時(shí)也獲取遠(yuǎn)程的標(biāo)簽。
git fetch --tags
深度獲?。?/p>
使用 --depth 選項(xiàng)可以獲取遠(yuǎn)程倉(cāng)庫(kù)的淺拷貝,只包含一定數(shù)量的提交。
git fetch --depth=1
獲取特定提交:
如果只需要獲取特定的提交而不是整個(gè)分支,可以使用 git fetch 與提交哈希值。
git fetch origin
2.pull: 從另一個(gè)倉(cāng)庫(kù)或本地分支獲取并集成更改。
2.1拉取遠(yuǎn)程分支的最新更改
默認(rèn)情況下,git pull 會(huì)拉取遠(yuǎn)程倉(cāng)庫(kù)(通常是 origin)的 main 分支的最新更改,并嘗試與當(dāng)前分支合并。
git pull
2.2拉取特定遠(yuǎn)程分支
可以指定遠(yuǎn)程分支來(lái)拉取特定的更改:
git pull origin feature-branch
2.3拉取并創(chuàng)建本地分支
如果本地不存在對(duì)應(yīng)的遠(yuǎn)程跟蹤分支,git pull 會(huì)自動(dòng)創(chuàng)建它。
git pull origin new-remote-branch
2.4拉取后保留本地提交
git pull 默認(rèn)會(huì)執(zhí)行快進(jìn)合并,如果可能的話,這意味著它會(huì)更新本地分支指針到遠(yuǎn)程分支的最新提交。
git pull --ff-only
2.5拉取并創(chuàng)建合并提交
使用 --no-ff 選項(xiàng)可以確保即使在快進(jìn)情況下也創(chuàng)建一個(gè)合并提交。
git pull --no-ff
2.7拉取并自動(dòng)解決沖突
使用 --rebase 選項(xiàng)可以拉取遠(yuǎn)程更改并在本地更改之上重新應(yīng)用它們,而不是創(chuàng)建一個(gè)合并提交。
git pull --rebase
2.8拉取特定標(biāo)簽
可以使用 git pull 拉取與特定標(biāo)簽關(guān)聯(lián)的提交。
git pull origin tag-name
2.9拉取所有遠(yuǎn)程分支
使用 --all 或 -a 選項(xiàng)可以拉取所有遠(yuǎn)程分支的更新。
git pull --all
2.91拉取并更新本地分支和遠(yuǎn)程跟蹤分支
使用 -u 選項(xiàng)可以更新本地分支和對(duì)應(yīng)的遠(yuǎn)程跟蹤分支。
git pull -u origin feature-branch
拉取并自動(dòng) stash:
使用 --stash 選項(xiàng)可以在拉取前自動(dòng) stash 未提交的更改,并在完成后再次應(yīng)用這些 stash。
git pull --stash
3.push: 更新遠(yuǎn)程引用和相關(guān)的對(duì)象。
3.1推送到遠(yuǎn)程倉(cāng)庫(kù)
默認(rèn)情況下,git push 會(huì)推送當(dāng)前分支到遠(yuǎn)程倉(cāng)庫(kù)的對(duì)應(yīng)跟蹤分支。
git push
3.2指定遠(yuǎn)程倉(cāng)庫(kù)和分支
可以指定遠(yuǎn)程倉(cāng)庫(kù)和分支來(lái)推送特定的更改:
git push
3.3推送所有本地分支
使用 --all 選項(xiàng)可以推送所有本地分支的更改到遠(yuǎn)程倉(cāng)庫(kù):
git push --all
3.4推送標(biāo)簽
使用 --tags 選項(xiàng)可以推送所有未推送的標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù):
git push --tags
3.5強(qiáng)制推送
使用 --force 或 -f 選項(xiàng)可以強(qiáng)制推送本地更改,即使這會(huì)導(dǎo)致遠(yuǎn)程倉(cāng)庫(kù)的更改丟失:
git push --force
注意:強(qiáng)制推送可能會(huì)覆蓋遠(yuǎn)程分支上的更改,應(yīng)謹(jǐn)慎使用。
3.6刪除遠(yuǎn)程分支
使用 --delete 選項(xiàng)可以刪除遠(yuǎn)程倉(cāng)庫(kù)中的分支:
git push --delete
3.7設(shè)置上游分支
推送時(shí)使用 -u 或 --set-upstream 選項(xiàng)可以設(shè)置本地分支跟蹤遠(yuǎn)程分支:
git push -u origin <本地分支名>
3.8推送特定提交
可以使用特定的提交哈希值來(lái)推送到遠(yuǎn)程分支:
git push
3.9推送并創(chuàng)建遠(yuǎn)程分支
如果遠(yuǎn)程倉(cāng)庫(kù)中不存在要推送的分支,git push origin 本地分支:遠(yuǎn)程分支
使用 SSH 推送:
如果遠(yuǎn)程倉(cāng)庫(kù)配置為使用 SSH 進(jìn)行認(rèn)證,git push 將使用 SSH 密鑰進(jìn)行認(rèn)證。
推送時(shí)忽略遠(yuǎn)程拒絕:
使用 --quiet 選項(xiàng)可以靜默推送,即使推送被遠(yuǎn)程拒絕。
推送前檢查是否快進(jìn):
使用 --ff-only 選項(xiàng)可以確保推送的更改可以被快進(jìn)合并,否則推送將被拒絕。
六、獲取更多幫助
git help -a 和 git help -g: 列出所有可用的子命令和一些概念指南。
git help
git help git: 獲取 Git 系統(tǒng)的概述。
2)commit的自由切換。
1.切換分支
git checkout new-feature 或 git switch new-feature
2.顯示歷史,獲取哈希值
git log
3.重置當(dāng)前分支到特定提交
使用
git reset
這將會(huì)進(jìn)入“detached HEAD”狀態(tài)。在這個(gè)狀態(tài)下,你可以瀏覽、修改和提交代碼,但這些提交不會(huì)與任何分支相關(guān)聯(lián)。這意味著如果你切換回其他分支或拉?。╬ull)新代碼,這些修改可能會(huì)丟失。
4.創(chuàng)建新分支以保留修改
如果你希望在“detached HEAD”狀態(tài)下做的修改被保留,你應(yīng)該在切換commit之前或之后創(chuàng)建一個(gè)新分支。
在切換commit之前:
git checkout -b
在切換commit之后
git branch
3)pull request
Fork 倉(cāng)庫(kù)(如果需要):如果你是外部貢獻(xiàn)者,你需要先 Fork 項(xiàng)目倉(cāng)庫(kù)到自己的賬戶下。
克隆倉(cāng)庫(kù):將 Fork 后的倉(cāng)庫(kù)克隆到本地。
創(chuàng)建分支:在本地倉(cāng)庫(kù)中創(chuàng)建一個(gè)新的分支,用于開(kāi)發(fā)你的功能或修復(fù)。
編寫代碼:在新分支上編寫你的代碼。
提交更改:將你的代碼更改提交到本地分支。
git add .
git commit -m "提交信息"
推送分支:將你的分支推送到你的遠(yuǎn)程倉(cāng)庫(kù)(通常是你的 Fork)。
git push -u 遠(yuǎn)程倉(cāng)庫(kù)別名 本地分支:遠(yuǎn)程分支
發(fā)起 Pull Request:
訪問(wèn)遠(yuǎn)程倉(cāng)庫(kù)的網(wǎng)頁(yè)界面。
找到 "Compare & pull request" 或 "New pull request" 的選項(xiàng)。
選擇你的源分支(你的更改所在的分支)和目標(biāo)分支(你想要合并到的分支,通常是主分支)。
描述 Pull Request:在 Pull Request 頁(yè)面上,添加標(biāo)題和描述,說(shuō)明為什么你進(jìn)行了這些更改,以及它們解決了什么問(wèn)題。
提交 Pull Request:提交你的 Pull Request,請(qǐng)求項(xiàng)目維護(hù)者或團(tuán)隊(duì)成員審查你的代碼。
代碼審查:其他開(kāi)發(fā)者將審查你的代碼,可能會(huì)提出問(wèn)題或建議修改。
討論和修改:根據(jù)反饋,你可能需要對(duì)你的代碼進(jìn)行進(jìn)一步的更改,并重新提交。
合并 Pull Request:一旦你的代碼被接受,項(xiàng)目維護(hù)者或有權(quán)限的成員可以將其合并到目標(biāo)分支中。
關(guān)閉 Pull Request:合并完成后,Pull Request 將自動(dòng)關(guān)閉。
管理員
在 倉(cāng)庫(kù)管理 - 保護(hù)分支設(shè)置 ,新增了一個(gè)保護(hù)分支規(guī)則master,并且設(shè)置了它為評(píng)審模式以及禁止任何人推送,那么無(wú)論是誰(shuí)(前提當(dāng)然得是倉(cāng)庫(kù)成員啦)往master分支推送代碼,都會(huì)自動(dòng)創(chuàng)建一個(gè) Pull Request:
在管理菜單下的保護(hù)分支設(shè)置界面中
點(diǎn)擊新建規(guī)則
設(shè)置規(guī)則生效的分支
設(shè)置推送代碼人員為禁止任何人推送
選擇可合并分支的人員
點(diǎn)擊保存
4)branch分支管理
1.查看分支
列出所有本地分支:git branch
列出所有本地和遠(yuǎn)程分支:git branch -a
列出已合并到當(dāng)前分支的分支:git branch --merged
列出未合并到當(dāng)前分支的分支:git branch --no-merged
2.創(chuàng)建分支
創(chuàng)建名為new-feature的新分支:git branch new-feature
從特定提交創(chuàng)建分支(例如,基于最近的第三次提交):git branch new-feature HEAD~3
3.切換分支
切換到已存在的分支new-feature:
git checkout new-feature 或 git switch new-feature(Git 2.23+)
4.刪除分支
刪除本地分支old-feature:git branch -d old-feature
如果分支未被合并,使用-D強(qiáng)制刪除:git branch -D old-feature
5.重命名分支
git branch -m <舊分支名> <新分支名>
6.分支類型
主分支(Main Branch):
通常是 main 或 master,作為項(xiàng)目的根分支。
它應(yīng)該是始終處于可部署狀態(tài)的穩(wěn)定版本。
開(kāi)發(fā)分支(Development Branch):
例如 develop 或 dev 分支,用于日常開(kāi)發(fā)工作。
所有新的功能和修復(fù)都在此分支上進(jìn)行。
版本分支(Release Branch):
用于準(zhǔn)備新版本的分支,如 release/1.0。
當(dāng)開(kāi)發(fā)分支上的代碼準(zhǔn)備發(fā)布時(shí),會(huì)創(chuàng)建一個(gè)版本分支進(jìn)行最后的測(cè)試和準(zhǔn)備。
SaaS 分支:
如果項(xiàng)目是為軟件即服務(wù)(SaaS)模型設(shè)計(jì)的,可能會(huì)有特定的分支來(lái)處理與服務(wù)相關(guān)的代碼,如 saas 分支。
功能分支(Feature Branch):
每個(gè)新功能都在獨(dú)立的功能分支上開(kāi)發(fā),如 feature/x。
完成后,功能分支可以合并回開(kāi)發(fā)分支。
Bug 修復(fù)分支(Bugfix Branch):
用于修復(fù)生產(chǎn)環(huán)境中發(fā)現(xiàn)的問(wèn)題,如 bugfix/x。
修復(fù)完成后,這些分支應(yīng)該合并回主分支和開(kāi)發(fā)分支。
實(shí)驗(yàn)分支(Experimental Branch):
用于實(shí)驗(yàn)性或高風(fēng)險(xiǎn)的更改,如 experiment/x。
這些分支可以自由地進(jìn)行嘗試,而不會(huì)影響主開(kāi)發(fā)流程。
熱修復(fù)分支(Hotfix Branch):
用于緊急修復(fù)生產(chǎn)環(huán)境中的問(wèn)題,如 hotfix/x。
熱修復(fù)分支通常直接從主分支拉出,并在修復(fù)后合并回主分支和開(kāi)發(fā)分支。
個(gè)人分支(Personal Branch):
每個(gè)開(kāi)發(fā)者可能有自己的個(gè)人分支,用于個(gè)人開(kāi)發(fā)和測(cè)試。
分支管理的最佳實(shí)踐:
保持主分支穩(wěn)定:始終確保主分支是可部署的穩(wěn)定版本。
小的頻繁合并:避免長(zhǎng)時(shí)間運(yùn)行的功能分支,頻繁地將更改合并回開(kāi)發(fā)分支以減少合并沖突。
代碼審查:在合并到主分支或開(kāi)發(fā)分支之前,進(jìn)行代碼審查。
自動(dòng)化測(cè)試:確保所有分支都有通過(guò)自動(dòng)化測(cè)試,以驗(yàn)證代碼更改不會(huì)引入錯(cuò)誤。
清晰的命名規(guī)則:為分支命名制定清晰的規(guī)則,以便于識(shí)別分支的用途。
文檔化流程:記錄分支管理策略和工作流程,確保所有團(tuán)隊(duì)成員都理解并遵循。
添加遠(yuǎn)程倉(cāng)庫(kù):
git remote add
柚子快報(bào)激活碼778899分享:Git help 官方命令詳解
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。