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

選自towardsdatascience,做者:Jeff Hale,機器之心編譯,參與:李詩萌、Chita。python

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

若是你不熟悉基本的 git 命令,在閱讀本文前能夠先參考我以前寫的關於 Git 工做流程的文章。安全

地址:towardsdatascience.com/learn-enoug…bash

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

檢查學習

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

  • git diff——查看全部本地文件的改動。只改動一個文件的話能夠在命令後添加文件名。atom

  • git log——查看全部提交歷史。還可用於帶有 git log –p my_file 的文件,輸入 q 退出。spa

  • git blame my file——瞭解誰在何時對 my_file 作了什麼樣的改動。3d

  • 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 是很安全的,由於它不會覆蓋其餘用戶分支可能依賴的歷史記錄。

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/

去和別人一塊兒工做、互相學習,並互相解惑吧!

相關文章
相關標籤/搜索