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