五個提升你的 Git 水平的命令
- 將這些命令加入到你的工作流中,使 Git 發(fā)揮更大的作用。
如果你經(jīng)常使用 Git,你可能會知道它非常有名。它可能是最受歡迎的版本控制方案,它被一些 最大的軟件項目 用來 跟蹤文件變更。Git 提供了 健壯的界面 來審閱代碼、把實(shí)驗性的變更合并到已經(jīng)存在的文件中。得益于 Git 鉤子,它以靈活性而聞名。同時,也因為它的強(qiáng)大,它給人們留下了一個“復(fù)雜”的印象。
Git 有諸多特性,你不必全部使用,但是如果你正在深入研究 Git 的 子命令subcommands,我這里倒是有幾個,或許你會覺得有用。
1、找到變更
如果你已經(jīng)熟悉 Git 的基本指令(fetch、add、commit、push、log 等等),但是希望學(xué)習(xí)更多,那么從 Git 的檢索子命令開始是一個簡單安全的選擇。檢索你的 Git 倉庫(你的 工作樹)并不會做出任何更改,它只是一個報告機(jī)制。你不會像使用 git checkout 一樣承擔(dān)數(shù)據(jù)完整性的風(fēng)險,你只是在向 Git 請求倉庫的當(dāng)前狀態(tài)和歷史記錄而已。
git whatchanged 命令(幾乎本身就是一個助記符)可以查看哪些文件在某個提交commit中有變更、分別做了什么變更。它是一個簡單的、用戶友好的命令,因為它把 show、diff-tree 和 log 這三個命令的最佳功能整合到了一個好記的命令中。
2、使用 git stash 管理變更
你越多地使用 Git,你就會使用 Git 越多。這就是說,一旦你習(xí)慣了 Git 的強(qiáng)大功能,你就會更頻繁地使用它。有時,你正在處理一大堆文件,忽然意識到了有更緊急的任務(wù)要做。這時,在 git stash 的幫助下,你就可以把所有正在進(jìn)行的工作收集起來,然后安全地暫存stash它們。當(dāng)你的工作空間變得整潔有序,你就可以把注意力放到別的任務(wù)上,晚些時候再把暫存的文件重新加載到工作樹里,繼續(xù)之前的工作。
3、使用 git worktree 來得到鏈接的副本
當(dāng) git stash 不夠用的時候,Git 還提供了強(qiáng)大的 git worktree 命令。有了它,你可以新建一個 鏈接的 倉庫副本clone,組成一個新分支,把 HEAD 設(shè)置到任意一個提交上,然后基于這個分支開始你的新工作。在這個鏈接的副本里,你可以進(jìn)行和主副本完全不同的任務(wù)。這是一個避免意外的變更影響當(dāng)前工作的好辦法。當(dāng)你完成了你的新工作,你可以把新分支推送到遠(yuǎn)程倉庫;也可以把當(dāng)前的變更歸檔,晚些時候再處理;還可以從別的工作樹中獲取它們的變更。無論選擇哪一種,你的工作空間之間都會保持相互隔離,任一空間中的變更都不會影響其他空間中的變更,直到你準(zhǔn)備好了要合并它們。
4、使用 git cherry-pick 來選擇合并
這可能聽起來很反直覺,但是,你的 Git 水平越高,你可能遇到的合并沖突就會越多。這是因為合并沖突不一定是錯誤的標(biāo)志,而是活躍的標(biāo)志。在學(xué)習(xí) Git 中,適應(yīng)合并時的沖突,并學(xué)會如何解決它們是非常重要的。通常的方式或許夠用,但是有時候你會需要更加靈活地進(jìn)行合并,這時候就該 git cherry-pick 出場了。遴選操作允許你選擇部分合并提交,這樣一來你就不需要因為一些細(xì)微的不協(xié)調(diào)而拒絕整個合并請求了。
5、使用 Git 來管理 $HOME
使用 Git 來管理你的主目錄從來沒有這么簡單過,這都要?dú)w功于 Git 可以自由選擇管理對象的能力,這是一個在多臺計算機(jī)之間保持同步的現(xiàn)實(shí)可行的選項。但是,想要讓它工作順利,你必須非常明智且謹(jǐn)慎才行。如果你想要了解更多,點(diǎn)擊閱讀我寫的關(guān)于 使用 Git 來管理 $HOME 的小技巧。
更好地使用 Git
Git 是一個強(qiáng)大的版本控制系統(tǒng),你使用得越熟練,就可以越輕松地借助它來完成復(fù)雜的任務(wù)。