選自towardsdatascience,作者:Jeff Hale,機器之心編譯,參與:李詩萌、Chita。
本文討論的是開發人員、資料科學家或產品經理應該瞭解的各種 Git 命令。我們將瞭解該如何用 Git 進行檢查、刪除和整理操作。我們還將介紹如何用 Bash 別名和 Git 編輯器配置來逃避 Vim 以節省時間。
如果你不熟悉基本的 git 命令,在閱讀本文前可以先參考我之前寫的關於 Git 工作流程的文章。
地址:towardsdatascience.com/learn-enoug…
本文介紹了 10 個常見的命令以及它們的一些引數。每個命令都可以連結到該命令的 Atlassian Bitbucket 指南。
檢查
先了解一下如何檢查改動痕跡。
git diff——檢視所有本地檔案的改動。只改動一個檔案的話可以在命令後新增檔名。
git log——檢視所有提交歷史。還可用於帶有 git log –p my_file 的檔案,輸入 q 退出。
git blame my file——瞭解誰在什麼時候對 my_file 做了什麼樣的改動。
git reflog——顯示原生程式碼庫 HEAD 的更改日誌。這個命令很適合查詢丟失的工作。
用 Git 進行檢查並不麻煩。相比之下,Git 中有不少刪除和撤銷提交以及檔案改動的操作。
撤銷
可以用 git reset、git checkout 和 git revert 撤銷在程式碼庫中所做的改動,這些命令可能有點難理解。
git reset 和 git checkout 既可用於提交也可用於單個檔案的修改,而 git revert 只能用在提交層面。如果你只需要處理尚未合併到協作遠端工作的本地提交,你可以使用這三者中任何一條命令。如果是協同工作且需要撤銷遠端分支中的提交,那麼就用 git revert。
這些命令中的每一條都有多個引數。以下是常見的用法:
git reset –-hard HEAD——撤銷最近提交以來暫存區和非暫存區的改動。
指定不同的提交而不是 HEAD,以撤銷自這條提交以來的更改。--hard 指的是撤銷暫存區和非暫存區的更改。
要確保你撤銷的不是協作夥伴所依賴的遠端分支的提交。
git checkout my commit——從 my_commit 中撤銷非暫存區的改動。
HEAD 常用在 my_commit,用來撤銷最近一次提交以來在本地工作目錄的改動。
checkout 最適合用於僅限於本地的撤銷。它不會破壞你的協作夥伴所依賴的遠端分支的提交歷史。
如果你將 checkout 用在分支而不是提交上,HEAD 將會切換到指定分支,並更新成匹配的工作目錄。這是 checkout 命令更常見的用法。
Git revert my commit——撤銷 my_commit 中的更改。當用 revert 撤銷改動時,它會產生新的提交。
對協作專案而言,revert 是很安全的,因為它不會覆蓋其他使用者分支可能依賴的歷史記錄。
有時候你只想刪除本地目錄中的未追蹤檔案。例如,也許你執行的程式碼在版本庫中建立了許多你不需要的不同型別的檔案。你可以一鍵清除它們!
Git clean –n——刪除本地工作目錄中的未追蹤檔案。
–n 表示試執行,在試執行中什麼都不會刪除。
-f 表示實際刪除檔案。
-d 表示刪除未追蹤的目錄。
預設情況下不會刪除 .gitignore 中的未追蹤檔案,但這種行為是可以更改的。
現在你已經知道了 Git 中用於撤銷操作的命令,接下來我們再看兩條可以有序排列檔案的命令。
整理
Git commit –amend——將暫存區的更改新增到最近一次提交中。
如果暫存區中什麼都沒有,你可以用該命令編輯最新的提交資訊。只有在提交尚未整合到遠端主分支中時才使用該命令!
Git push my remote –tags——將所有本地標記傳送到遠端版本庫中。適用於版本變更。
如果你用的是 Python,並希望更改你所構建的包,bump2version 會自動為你建立標籤。一旦將標籤推送出去,你就可以在自己的版本中使用了。這裡有一篇我的指南,可以指導你完成第一個 OSS Python 包。跟緊我,確保你不會錯過版本控制的部分!
指南:https://towardsdatascience.com/build-your-first-open-source-python-project-53471c9942a7?source=friends_link&sk=576540dbd90cf2ee72a3a0e0bfa72ffb
求助,我被困在 Vim 中出不去了!
使用 Git 時,你可能偶爾會發現自己被困在 Vim 會話中了。例如,你試著在沒有提交資訊的情況下提交,Vim 會自動開啟。如果你不知道 Vim 的話,這種情況糟糕透了——在這個關於如何擺脫這一困境的 Stack Overflow 回答下有超過 4,000 的投票。
以下四步用於在已儲存的檔案中逃離 Vim:
1. 按 i 進入插入模式
2. 在第一行輸入你的提交資訊
3. 按下退出鍵——Esc
4. 輸入 :x。別忘了冒號(colon)。
更改預設編輯器
為了避免使用 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複製程式碼
更多關於 .bash_profile 相關資訊,請參閱:stackoverflow.com/a/30462883/…
現在你在終端鍵入 gs 的效果和鍵入 git status 的效果是一樣的。注意,在終端中你可以輸入快捷鍵後再輸入其它標記。
你也可以使用 Git 的別名,但這要求你在輸入快捷鍵命令之前先輸入 git。誰會需要這些額外的按鍵呢?
總結
本文介紹了許多關鍵的 Git 命令,還介紹瞭如何配置環境,這幫你節省了一些時間。現在你有了 Git 和 GitHub 的基礎,準備好進行下一步了嗎?
想要更深入地瞭解,請參閱這篇 Bitbucket Git 教程:www.atlassian.com/git/tutoria…
這裡還有一篇關於 Git 分支的互動式指南:learngitbranching.js.org/
去和別人一起工作、互相學習,並互相解惑吧!