你可能不太會用的 10 個 Git 命令

英文:Jeff Hale,編譯:機器之心

本文討論的是開發人員、數據科學家或產品經理應該瞭解的各種 Git 命令。我們將瞭解該如何用 Git 進行檢查、刪除和整理操作。我們還將介紹如何用 Bash 別名和 Git 編輯器配置來逃避 Vim 以節省時間。

本文介紹了 10 個常見的命令以及它們的一些參數。每個命令都可以鏈接到該命令的 Atlassian Bitbucket 指南。

檢查

先了解一下如何檢查改動痕跡。

用 Git 進行檢查並不麻煩。相比之下,Git 中有不少刪除和撤銷提交以及文件改動的操作。

撤銷

可以用 git reset、git checkout 和 git revert 撤銷在代碼庫中所做的改動,這些命令可能有點難理解。

git reset 和 git checkout 既可用於提交也可用於單個文件的修改,而 git revert 只能用在提交層面。如果你只需要處理尚未合併到協作遠程工作的本地提交,你可以使用這三者中任何一條命令。如果是協同工作且需要撤銷遠程分支中的提交,那麼就用 git revert。

這些命令中的每一條都有多個參數。以下是常見的用法:

指定不同的提交而不是 HEAD,以撤銷自這條提交以來的更改。--hard 指的是撤銷暫存區和非暫存區的更改。

要確保你撤銷的不是協作夥伴所依賴的遠程分支的提交。

HEAD 常用在 my_commit,用來撤銷最近一次提交以來在本地工作目錄的改動。

checkout 最適合用於僅限於本地的撤銷。它不會破壞你的協作夥伴所依賴的遠程分支的提交歷史。

如果你將 checkout 用在分支而不是提交上,HEAD 將會切換到指定分支,並更新成匹配的工作目錄。這是 checkout 命令更常見的用法。

對協作項目而言,revert 是很安全的,因爲它不會覆蓋其他用戶分支可能依賴的歷史記錄。

revert 很安全。

有時候你只想刪除本地目錄中的未追蹤文件。例如,也許你運行的代碼在版本庫中創建了許多你不需要的不同類型的文件。你可以一鍵清除它們!

默認情況下不會刪除 .gitignore 中的未追蹤文件,但這種行爲是可以更改的。

現在你已經知道了 Git 中用於撤銷操作的命令,接下來我們再看兩條可以有序排列文件的命令。

整理

如果暫存區中什麼都沒有,你可以用該命令編輯最新的提交信息。只有在提交尚未整合到遠程主分支中時才使用該命令!

如果你用的是 Python,並希望更改你所構建的包,bump2version 會自動爲你創建標籤。一旦將標籤推送出去,你就可以在自己的版本中使用了。這裏有一篇我的指南,可以指導你完成第一個 OSS Python 包。跟緊我,確保你不會錯過版本控制的部分!

求助,我被困在 Vim 中出不去了!

使用 Git 時,你可能偶爾會發現自己被困在 Vim 會話中了。例如,你試着在沒有提交信息的情況下提交,Vim 會自動開啓。如果你不知道 Vim 的話,這種情況糟糕透了——在這個關於如何擺脫這一困境的 Stack Overflow 回答下有超過 4,000 的投票。

以下四步用於在已保存的文件中逃離 Vim:

更改默認編輯器

爲了避免使用 Vim,可以更改 Git 中的默認編輯器。以下是更改我使用的編輯器 Atom 的默認值的命令:

git config --global core.editor "atom --wait"

假設你已經安裝了 Atom,你現在就可以在 Atom 中解決 Git 問題了。

創建 Git 命令的快捷鍵

在 .bash_profile 中添加以下 alias 命令可以給 Git 命令添加快捷鍵:

alias gs='git status '
alias ga='git add '
alias gaa='git add -A '
alias gb='git branch '
alias gc='git commit '
alias gcm='git commit -m '
alias go='git checkout '

你可以調整上述命令,來爲任何 Git 命令添加快捷鍵。如果你沒有 .bash_profile,你可以用以下命令在 macOS 上創建一個:

touch ~/.bash_profile

打開該文件:

open ~/.bash_profile

現在你在終端鍵入 gs 的效果和鍵入 git status 的效果是一樣的。注意,在終端中你可以輸入快捷鍵後再輸入其它標記。

你也可以使用 Git 的別名,但這要求你在輸入快捷鍵命令之前先輸入 git。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/O1Mnn8PhT6OWAR38i32ahA