10 個迅速提公升你 Git 水平的提示

2022-09-07 21:45:29 字數 3576 閱讀 8870

**至:10 個迅速提公升你 git 水平的提示 – 漠天

假使你使用命令列工具執行git命令,那麼每次手動輸入各種命令是一件很令人厭煩的事情。

為了解決這個問題,你可以啟用git的自動補全功能,完成這項工作僅需要幾分鐘。

為了得到這個指令碼,在unix系統下執行以下命令:

cd

~curl

-o ~/.git-completion.bash

然後,新增下面幾行到你的 ~/.bash_profile 檔案中:

if [ -f ~/.git-completion.bash ]; then

. ~/.git-completion.bash

fi

儘管早些時候我們已經提到這個,但是強調的不夠充分。如果你想使用git的全部功能特性,

你絕對應該切換到命令列介面!

你是不是很煩那些編譯過的檔案 (比如 .pyc) 出現在你的 git 倉庫中?或者說你已經受夠了已經把它們都加進了 git 倉庫?好了,這有個辦法可以讓你告訴 git 忽略掉那些特定的檔案和資料夾。只需要建立乙個名為 .gitignore 然後列出那些你不希望 git 跟蹤的檔案和資料夾。你還可以新增例外,通過使用感嘆號(!)。

*.pyc

*.exe

my_db_config/

!main.pyc

當事情出錯時,先去指責別人是人類的天性之一。如果你的產品伺服器掛了,使用git blame命令可以很容易找出罪魁禍首。這個命令可以將檔案中的每一行的作者、最新的變更提交和提交時間展示出來。

在下面的截圖中你可以看到命令是如何在更大的目錄中搜尋。

上一節我們已經學習了如何使用 git log ,不過,這裡還有三個你應該知道的選項。

把這些選項組合起來之後,輸出看起來會像這樣:

假設你不小心提交了些你不想要的東西,不得不做一次強制重置來恢復到之前的狀態。然後,你意識到在這一過程中你丟失了其它一些資訊並且想要把它們找回來,或者至少瞅一眼。這正是git reflog可以做到的。

乙個簡單的git log命令可以為你展示最後一次commit,以及它的父親,還有它父親的父親等等。而git reflog則列出了head曾經指向過的一系列commit。要明白它們只存在於你本機中;而不是你的版本倉庫的一部分,也不包含在push和merge操作中。

如果我執行git log命令,我可以看到一些commit,它們都是我倉庫的一部分:

然而,乙個git reflog命令則展示了一次commit (b1b0ee9–head@),它正是我剛才進行強制重置時弄丟的:

一般情況下,建立乙個基於特性的提交是比較好的做法,意思是每次提交都必須代表乙個新特性的產生或者是乙個bug的修復。如果你修復了兩個bug,或是新增了多個新特性但是卻沒有提交這些變化會怎樣呢?在這種情況下,你可以把這些變化放在一次提交中。但更好的方法是把檔案暫存(stage)然後分別提交。

例如你對乙個檔案進行了多次修改並且想把他們分別提交。這種情況下,你可以在 add 命令中加上 -p 引數

git add -p [file_name]
我們來演示一下在 file_name 檔案中新增了3行文字,但只想提交第一行和第三行。先看一下 git diff 顯示的結果:

然後再看看在 add 命令中新增 -p 引數是怎樣的?

看上去,git 假定所有的改變都是針對同一件事情的,因此它把這些都放在了乙個塊裡。你有如下幾個選項:

在我們這個例子中,最終是希望分割成更小的部分,然後有選擇的新增或者忽略其中一部分。

正如你所看到的,我們新增了第一行和第三行而忽略了第二行。之後你可以檢視倉庫狀態之後並進行提交。

當你提交**進行**審查時或者建立一次pull request (這在開源專案中經常發生),你的**在被接受之前會被要求做一些變更。於是你進行了變更,並且直到下一次審查之前你沒有再次被要求進行變更過。在你知道又要進行變更之前,你已經有了一些額外的commit。理想情況下,你可以用rebase命令把多個commit壓縮成乙個。

git rebase -i head~[number_of_commits]
如果你想要壓縮最後兩個commit,你需要執行下列命令。

git rebase -i head~2
執行該命令時,你會看到乙個互動介面,列出了許多commit讓你選擇哪些需要進行壓縮。理想情況下,你選擇最後一次commit並把其它老commit都進行壓縮。

然後會要求你為新的commit錄入提交資訊。這一過程本質上重寫了你的commit歷史。

你正在修改某個bug或者某個特性,又突然被要求展示你的工作。而你現在所做的工作還不足以提交,這個階段你還無法進行展示(不能回到更改之前)。在這種情況下, git stash可以幫助你。stash在本質上會取走所有的變更並儲存它們為以備將來使用。stash你的變更,你只需簡單地執行下面的命令-

git stash
希望檢查stash列表,你可以執行下面的命令:

git stash list
儘管 reflog 是唯一檢查丟失提交的方式。但它不是適應用於大型的倉庫。那就是 fsck(檔案系統檢測)命令登場的時候了。

git fsck --lost-found
這裡你可以看到丟掉的提交。你可以通過執行 git show [commit_hash] 檢視提交之後的改變或者執行git merge [commit_hash] 來恢復到之前的提交。

git fsck 相對reflog是有優勢的。比方說你刪除乙個遠端的分支然後關閉倉庫。 用fsck 你可以搜尋和恢復已刪除的遠端分支。

10 個迅速提公升你 Git 水平的提示

假使你使用命令列工具執行git命令,那麼每次手動輸入各種命令是一件很令人厭煩的事情。為了解決這個問題,你可以啟用git的自動補全功能,完成這項工作僅需要幾分鐘。為了得到這個指令碼,在unix系統下執行以下命令 然後,新增下面幾行到你的 bash profile 檔案中 1 2 3 if f git ...

Git常用命令大全,迅速提公升你的Git水平

git常用命令大全,迅速提公升你的git水平 初始化本地git倉庫 建立新倉庫 git init 配置使用者名稱 git config global user.name 配置郵件 git config global user.email com git status等命令自動著色 git confi...

Git 高階 10大技巧讓你迅速提公升

1.git自動補全 假使你使用命令列工具執行git命令,那麼每次手動輸入各種命令是一件很令人厭煩的事情。命令 cd curl o git completion.bash 然後,新增下面幾行到你的 bash profile 檔案中 if f git completion.bash then git c...