一、Stash 使用
git stash
命令用于臨時(shí)保存和恢復(fù)未完成的工作。
-
保存當(dāng)前工作狀態(tài):
git stash save "stash message"
最新的建議寫法:
git stash puth -m "stash message"
這會(huì)創(chuàng)建一個(gè)新的 stash,你可以提供一個(gè)消息來進(jìn)行描述。
-
查看所有保存的 stash:
git stash list
-
恢復(fù)最近的 stash:
git stash pop
這會(huì)將最近的 stash 應(yīng)用到當(dāng)前分支,并從 stash 列表中刪除它。
-
恢復(fù)指定的 stash:
git stash apply stash@{n}
其中
n
是你想要應(yīng)用的 stash 的索引。
該功能我常用于分支間臨時(shí)更改的切換,例如我在 A 分支更改了很多內(nèi)容,后面發(fā)現(xiàn)這些更改本應(yīng)在 B 分支進(jìn)行處理的,此時(shí)這個(gè)功能就非常有用。
二、Cherry-pick 使用
git cherry-pick
命令用于選擇一個(gè)或多個(gè)提交并應(yīng)用到當(dāng)前分支。
-
應(yīng)用單個(gè)提交:
git cherry-pick <commit-hash>
這會(huì)將指定的提交應(yīng)用到當(dāng)前分支,當(dāng)然它們的哈希值會(huì)不一樣。
-
應(yīng)用多個(gè)提交:
git cherry-pick <commit-hash1> <commit-hash2> <commit-hash3>
你可以一次應(yīng)用多個(gè)提交。
-
解決 cherry-pick 沖突:
如果在 cherry-pick 過程中發(fā)生沖突,你需要手動(dòng)解決它們,然后執(zhí)行以下命令完成 cherry-pick:
git add <沖突文件> git cherry-pick --continue
三、Reflog 使用
git reflog
命令顯示當(dāng)前分支的最近操作日志。
-
查看當(dāng)前分支的 reflog:
git reflog
這將顯示當(dāng)前分支的提交歷史,包括已經(jīng)被刪除的提交。
-
恢復(fù)已刪除的提交:
如果你想恢復(fù)一個(gè)已經(jīng)被刪除的提交,你可以使用
git cherry-pick
或者git reset
命令。
四、修改歷史提交
有時(shí)候你可能需要修改歷史提交。
-
修改最近一次提交:
git commit --amend
這會(huì)打開編輯器讓你修改提交信息,并且可以添加或修改此次提交的文件。
-
修改歷史中的多個(gè)提交:
git rebase -i <commit-hash>^
在交互式 rebase 界面中,你可以選擇要修改的提交,并將其更改為
edit
狀態(tài)。然后使用git commit --amend
修改提交,接著使用git rebase --continue
繼續(xù)執(zhí)行 rebase。看不懂
^
符號(hào)的可以去看 【Git 教程】Git 基本使用方法。
五、使用別名
為了提高命令行操作的效率,可以為常用的 Git 命令設(shè)置別名(在 【Git 教程】Git 基本使用方法 中我們也已經(jīng)展示了一下,不過那是通過直接更改配置文件來達(dá)到目的的)。
-
設(shè)置別名:
git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit
在
.gitconfig
文件中配置這些別名,以便它們?cè)谒袀}(cāng)庫中生效。
六、Submodule 使用
git submodule
命令用于管理子模塊。
此命令可以達(dá)到
svn
的目錄權(quán)限效果。
-
添加子模塊:
git submodule add <repository> <path>
這會(huì)在指定的路徑下添加子模塊。
-
更新子模塊:
git submodule update --init --recursive
這會(huì)初始化、遞歸地更新所有子模塊。
七、鉤子(Hooks)使用
Git 鉤子可以在 Git 操作的特定階段運(yùn)行自定義腳本。所有鉤子均被放置在 Git 目錄下的一個(gè)特定子目錄,即我們通常在大多數(shù)項(xiàng)目中看到的 .git/hooks
目錄。在通過 git init
命令創(chuàng)建新的版本庫的時(shí)候,Git 會(huì)自動(dòng)在這個(gè)位置部署一些示范腳本。這些腳本不僅具備可執(zhí)行性,還會(huì)展示當(dāng)它們激活時(shí)傳遞的參數(shù)。雖然這些示例腳本主要是用 shell 編寫的,部分還包含了 Perl 代碼,但實(shí)際上,只要腳本命名得當(dāng)且具備可執(zhí)行屬性,可以使用任何編程語言來編寫,無論是 Ruby、Python 或者其他你所擅長(zhǎng)的語言皆可。
-
安裝鉤子:
將自定義腳本放在
.git/hooks
目錄下的相應(yīng)位置。例如,pre-commit
鉤子在提交之前運(yùn)行。 -
示例
pre-commit
鉤子:#!/bin/bash # 檢查代碼風(fēng)格 if ! git diff-index --cached --name-only HEAD | grep -E '\.jsx\?$' | xargs eslint; then exit 1 fi
在這個(gè)例子中,鉤子會(huì)在提交前運(yùn)行
ESLint
檢查。
八、淺克?。⊿hallow Clone)
git clone
命令的 --depth
選項(xiàng)用于創(chuàng)建淺克隆。
-
創(chuàng)建淺克?。?/p>
git clone --depth=1 <repository>
這會(huì)克隆倉(cāng)庫的最新一次提交,而不包括完整的歷史記錄。
九、Bisect 使用
git bisect
命令用于在 Git 歷史中查找引入 bug 的提交。(這個(gè)功能我自己也少用,沒法解說的太詳細(xì),大家湊合看看吧。。。)
-
啟動(dòng) bisect:
git bisect start
-
標(biāo)記一個(gè)已知包含 bug 的提交:
git bisect bad <commit-hash>
-
標(biāo)記一個(gè)已知不包含 bug 的提交:
git bisect good <commit-hash>
-
使用
gitk
查看當(dāng)前 bisect 過程中剩余的提交信息:git bisect visualize
十、Archive 使用
git archive
命令用于將 Git 倉(cāng)庫打包成一個(gè)歸檔文件。
-
創(chuàng)建歸檔文件:
git archive --format zip --output archive.zip HEAD
這將創(chuàng)建一個(gè)名為
archive.zip
的歸檔文件,其中包含當(dāng)前提交(HEAD
)的代碼。據(jù)我使用經(jīng)驗(yàn)所知,打包成的歸檔文件并不會(huì)包含
.gitignore
中忽略的文件。
十一、Revert 使用
git revert
命令用于撤銷 Git 倉(cāng)庫中的提交。
-
撤銷單個(gè)提交:
git revert <commit-hash> -m 1
這將撤銷指定提交(
<commit-hash>
)的一個(gè)父提交。 -
撤銷多個(gè)提交:
git revert <commit-hash1>..<commit-hash2> -m 1
這將撤銷指定提交范圍(
<commit-hash1>
到<commit-hash2>
)的一個(gè)父提交。 -
撤銷提交并保留更改:
git revert -n <commit-hash>
這將撤銷指定提交(
<commit-hash>
),但不會(huì)提交更改。相反,它會(huì)將更改留在工作目錄中,以便你進(jìn)行下一步操作。
十二、Clean 使用
git clean
命令用于刪除 Git 倉(cāng)庫中未跟蹤的文件。
-
強(qiáng)制刪除未跟蹤的文件:
git clean -f
這將強(qiáng)制刪除所有未跟蹤的文件。
-
強(qiáng)制刪除未跟蹤的目錄:
git clean -fd
這將強(qiáng)制刪除所有未跟蹤的文件和目錄。
十三、Grep 使用
git grep
命令用于在 Git 倉(cāng)庫中搜索字符串。
-
搜索當(dāng)前提交中的字符串:
git grep "string"
這將搜索當(dāng)前提交中包含指定字符串(
string
)的文件。 -
搜索歷史提交中的字符串:
git grep "string" <commit-hash>
這將搜索指定提交(
<commit-hash>
)中包含指定字符串(string
)的文件。
十四、Rm 使用
git rm
命令用于從 Git 倉(cāng)庫中刪除文件或目錄。
-
刪除文件:
git rm <file>
這將刪除指定文件(
<file>
)并從 Git 倉(cāng)庫中移除。 -
刪除目錄:
git rm -r <directory>
這將刪除指定目錄(
<directory>
)及其所有子目錄和文件,并從 Git 倉(cāng)庫中移除。 -
強(qiáng)制刪除文件或目錄:
git rm -f <file>
這將強(qiáng)制刪除指定文件(
<file>
)或目錄(<directory>
),而不進(jìn)行任何確認(rèn)。 -
從 Git 倉(cāng)庫中刪除文件但不刪除文件內(nèi)容
如果你只想從 Git 倉(cāng)庫中刪除文件,但不刪除文件內(nèi)容,可以使用
git rm --cached
選項(xiàng)。git rm --cached <file>
這將從 Git 倉(cāng)庫中刪除指定文件(
<file>
),但不會(huì)刪除文件內(nèi)容。 -
撤銷 Git rm 操作
如果你在執(zhí)行
git rm
后發(fā)現(xiàn)誤刪了文件,可以使用git checkout
命令撤銷操作。git checkout -- <file>
這將撤銷對(duì)指定文件(
<file>
)的刪除操作。
十五、.gitignore 相關(guān)
-
檢查文件是否被 Git 忽略:文章來源:http://www.zghlxwxcb.cn/news/detail-831366.html
git check-ignore <file>
如果想看所有被
.gitignore
匹配到的忽略的文件/目錄,可以這樣寫:文章來源地址http://www.zghlxwxcb.cn/news/detail-831366.htmlgit check-ignore *
到了這里,關(guān)于【Git 教程】Git 進(jìn)階使用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!