2019-08-29 11:54:01 4250瀏覽
git命令如今是經(jīng)常被使用的,本篇文章扣丁學(xué)堂Linux培訓(xùn)小編給讀者們分享一下常用的git命令有哪些,對(duì)git命令感興趣的小伙伴就隨小編來(lái)了解一下吧,希望對(duì)小伙伴們有幫助。
rm
git rm 不同于直接使用 rm,git rm 會(huì)刪除工作區(qū) 和 stage 區(qū)的內(nèi)容。注意:這里你沒(méi)辦法再使用 git checkout -- <filename> 來(lái)回滾操作了,因?yàn)楣ぷ鲄^(qū)也沒(méi)有 filename 文件了,沒(méi)辦法與 repository 做關(guān)聯(lián),只能使用 git reset HEAD <filename> 來(lái)重置 stage 中的此文件,然后 git checkout -- <filename>
git rm [--cached] [-r] [-f] <filename>
這里就提示一點(diǎn),只想把 stage 中的文件刪除掉讓文件脫離 git 的管理,可以使用
git rm --cached <filename>
此時(shí)工作區(qū)的 filename 并不會(huì)被刪除,但狀態(tài)會(huì)被改為 untracked,同時(shí) stage 會(huì)記錄下 filename 的狀態(tài)為刪除,提交的話版本庫(kù)將新增一個(gè) filename 被刪除掉的版本。
刪除 stage 中的文件和使用 reset命令 重置 stage 中的文件是有區(qū)別的,刪除會(huì)讓文件狀態(tài)更改為 untracked,而重置會(huì)讓文件狀態(tài)更改為 unstage(如果工作區(qū)和 stage 文件內(nèi)容不一致)。
小實(shí)例場(chǎng)景:
1、回滾工作區(qū)某文件到指定的 repository 版本
工作中,我們可能會(huì)針對(duì)某文件做多次修改和 add 到 stage 的操作,而后發(fā)現(xiàn)思路完全錯(cuò)了,需要重新設(shè)計(jì)開(kāi)發(fā)。
比如文件 foo 的 A版 我提交了一次后,又進(jìn)行了 B版 和 C版 的兩次修改并 add 到了 stage 區(qū)。第三次修改后 D版 我發(fā)現(xiàn)一開(kāi)始思路就錯(cuò)了,需要重新設(shè)計(jì)。那此時(shí)直接使用 git checkout -- foo 是拿不到最初的 A版 的,因?yàn)?stage 區(qū)還存放著 foo 的 C版。此時(shí)我們便可以使用 git reset HEAD foo 命令,repository 最新版本號(hào)中存放著 foo 的 A版,命令會(huì)在不移動(dòng) HEAD 的前提下,使用 foo A版 去重置 stage 區(qū)。命令執(zhí)行后 stage 區(qū)的 foo 文件已經(jīng)是 A版 了。我們?cè)偈褂?span id="ww1utbxe" class="Apple-converted-space"> git checkout -- foo 便可以將工作區(qū)的 foo D版 回滾至 A 版。即:
git reset HEAD foo & git checkout -- foo
HEAD 代表當(dāng)前版本,所以 HEAD指針 不會(huì)移動(dòng)。同時(shí) stage 區(qū)會(huì)被 repository 的當(dāng)前版本的 filename 重置,也就說(shuō) stage 區(qū) 存放的 filename 與 repository 中相同了。此時(shí)我們?cè)偈褂?span id="ww1utbxe" class="Apple-converted-space"> git checkout -- <filename> 便可以回滾工作區(qū)的 filename 到 repository 的當(dāng)前版本。其實(shí)就是利用 reset --mixed 會(huì)重置 stage 區(qū),然后 checkout 會(huì)將 stage 區(qū)的文件檢出到工作目錄。當(dāng)然,reset 很靈活,可以回滾任意指定的版本。
其實(shí)如果只是回滾至當(dāng)前版本的話,還有個(gè)命令能實(shí)現(xiàn)相同的功能
git rm --cached <filename> & git checkout -- <filename>
git rm --cached <filename> 會(huì)將 stage 中的此文件刪除,文件狀態(tài)會(huì)變?yōu)?untracked,然后 checkout 時(shí)發(fā)現(xiàn) stage 中木有此文件,故會(huì)去 repository 的當(dāng)前版本中檢出此文件。
diff
gitdiff--<filename>工作區(qū)比較暫存區(qū)
gitdiff--cached--<filename>暫存區(qū)比較本地庫(kù)當(dāng)前版本
gitdiffHEAD~N--<filename>工作區(qū)比較本地庫(kù)第N個(gè)版本
gitdiffHEADHEAD^--<filename>HEAD比較HEAD^
gitdiffmastertmp--<filename>master比較tmp
gitdiffSHA1SHA2--<filename>比較兩個(gè)歷史版本之間的差異
想要了解更多關(guān)于Linux開(kāi)發(fā)方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂Linux培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的Linux講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的Linux視頻教程定能讓你快速掌握Linux從入門到精通開(kāi)發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂Linux技術(shù)交流群:422345477。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入JavaEE/微服務(wù)VIP免費(fèi)公開(kāi)課】
查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>