10個(gè)你應(yīng)該了解的Git命令(以及Git省時(shí)小竅門)
在本文中,我們將討論那些作為開發(fā)人員、數(shù)據(jù)科學(xué)家或產(chǎn)品經(jīng)理應(yīng)該知道的各種各樣的Git命令。并且將使用Git查看、刪除和整理。此外,我們還將介紹如何使用Bash別名和Git編輯器配置轉(zhuǎn)義Vim和節(jié)省時(shí)間的方法。
如果你不熟悉基本的git命令,那么在閱讀本文之前,請(qǐng)查看我之前關(guān)于git工作流的文章。
下面是需要了解的10個(gè)命令和它們的一些常見標(biāo)志。每個(gè)命令都鏈接到該命令的Atlassian Bitbucket指南。
查看信息
首先,讓我們來查看變化。
- git diff——查看所有本地文件更改??梢愿郊游募?,以僅顯示一個(gè)文件的更改。
- git log——查看所有提交歷史記錄。也可以用于具有g(shù)it log -p my_file的文件。輸入q退出。
- git blame my_file——查看誰(shuí)更改了my_file中的內(nèi)容和時(shí)間。
- git reflog——顯示本地存儲(chǔ)庫(kù)HEAD的更改日志。有助于找到遺失的文件。
用git查看信息并不是很混亂。相比之下,Git提供了大量的選項(xiàng)來刪除、撤消提交和文件更改。
撤消信息
git reset、git checkout和git revert用于撤消對(duì)存儲(chǔ)庫(kù)所做更改的影響。這些命令可能很難理解。
git reset和git checkout可用于提交和單個(gè)文件。git revert僅用于提交級(jí)別。
如果你只是處理尚未合并到協(xié)作遠(yuǎn)程工作中的本地提交,則可以使用這些命令中的任何一個(gè)。
如果你正在協(xié)作工作,并且需要撤銷在遠(yuǎn)程分支中的提交,那么就使用git revert。
這些命令中的每一個(gè)都可以采用多種選擇。 以下是常見用途:
- git reset --hard HEAD——丟棄自最近提交以來的階段性和非階段性更改。
指定一個(gè)不同的提交,而不是HEAD來丟棄自提交以來的更改。——hard指定階段性和非階段性的更改。
確保你不會(huì)放棄協(xié)作者所依賴的遠(yuǎn)程分支的提交!
- git checkout my_commit——放棄my_commit之后非階段性的更改。
HEAD通常用于my_commit,以放棄自最近一次提交以來對(duì)本地工作目錄的更改。
checkout最適合用于本地撤銷。它不會(huì)打亂協(xié)作者所依賴的遠(yuǎn)程分支的提交歷史記錄!
如果你將checkout與分支一起使用,而不是使用提交,則HEAD將切換到指定的分支,并更新工作目錄以匹配。這是checkout命令的更常見用法。
- git revert my_commit——撤消my_commit中更改的效果。當(dāng)撤消更改時(shí),revert會(huì)進(jìn)行新的提交。
revert對(duì)于協(xié)作項(xiàng)目是安全的,因?yàn)樗粫?huì)覆蓋其他用戶的分支所可能依賴的歷史記錄。
revert是安全的
有時(shí)你只想刪除本地目錄中的未跟蹤文件。例如,你可能運(yùn)行了一些代碼,這些代碼創(chuàng)建了許多你在repo中不需要的不同類型的文件。那么,你可以在一瞬間把它們清洗干凈!
- git clean -n——刪除本地工作目錄中的未跟蹤文件
-n標(biāo)志用于沒有刪除任何內(nèi)容的干運(yùn)行。
使用-f標(biāo)志來實(shí)際刪除文件。
使用-d標(biāo)志刪除未跟蹤的目錄。
默認(rèn)情況下,.gitignore未跟蹤的文件不會(huì)被刪除,但是可以更改此行為。
現(xiàn)在你已經(jīng)了解了在Git中撤消操作的工具,那么讓我們來看看另外兩個(gè)命令。
整理信息
- git commit --amend——將階段性的更改添加到最近的提交。
如果沒有執(zhí)行暫存,此命令只允許你編輯最近的提交消息。只有在提交未集成到遠(yuǎn)程主分支時(shí)才使用此命令!
- git push my_remote --tags——將所有本地標(biāo)記發(fā)送到遠(yuǎn)程repo。適合于版本控制更改。
如果你正在使用python并對(duì)構(gòu)建的包進(jìn)行更改,bump2version將自動(dòng)為你創(chuàng)建標(biāo)記。一旦你推送了標(biāo)記,就可以在發(fā)布中使用它們。這是我制作***個(gè)OSS python包的指南。跟著我,確保你不會(huì)錯(cuò)過版本控制的部分!
救命,我被困在Vim里出不來了!
使用Git,你可能有時(shí)會(huì)發(fā)現(xiàn)自己陷入了Vim編輯器會(huì)話。例如,假設(shè)你嘗試在沒有提交消息的情況下提交,Vim將自動(dòng)打開。如果你不了解Vim,這有點(diǎn)難纏——看看這個(gè)在Stack Overflow中超過4,000投票的回答,來了解如何擺脫它。
自由了!
以下是使用保存文件逃避Vim的四步計(jì)劃:
1.按i進(jìn)入插入模式。
2.在***行輸入提交消息。
3.按下退出鍵-——Esc。
4.輸入:x。別忘了冒號(hào)。
恭喜,你自由了!
改變默認(rèn)編輯器
為了完全避免Vim,可以在Git中更改默認(rèn)編輯器。這里是一些帶有通用編輯器命令的文檔。下面是修改我使用的編輯器Atom默認(rèn)值的命令:
假設(shè)你已經(jīng)安裝了Atom,現(xiàn)在可以解決其中的Git問題。太棒了!
為Git命令創(chuàng)建快捷方式
通過在.bash_profile中添加以下別名,為Git命令添加快捷方式。

你可以根據(jù)自己的喜好調(diào)整Git命令的快捷方式。
如果你沒有.bash_profile,可以使用以下命令在macOS上創(chuàng)建一個(gè):

然后打開它:

有關(guān).bash_profile的更多信息,請(qǐng)點(diǎn)擊這里。
現(xiàn)在,當(dāng)你在終端中輸入gs時(shí),它與輸入git status相同。請(qǐng)注意,你可以在快捷方式之后在終端中輸入其他標(biāo)志。
你也可以制作Git別名,但是那些要求你在快捷命令之前鍵入git。這就多此一舉了。
包裝
在本文中,你已經(jīng)看到了一些關(guān)鍵的Git命令,并配置了環(huán)境以節(jié)省時(shí)間?,F(xiàn)在你已經(jīng)有了Git和GitHub的基礎(chǔ)。準(zhǔn)備好下一步了嗎?
查看這個(gè)Bitbucket Git教程,來了解更多。
探索Git分支的交互式指南。分支可能不好理解,但絕對(duì)值得一看。
去玩,去學(xué)習(xí),向別人解釋這些不同之處。
我希望這篇介紹Git和GitHub的文章對(duì)你有用。如果可以,請(qǐng)?jiān)谀阕钕矚g的社交媒體上分享,這樣其他人也能找到它。