我經常同時處理多個功能,這導致我隱藏更改並在切換到其他任務時忘記它們。我嘗試使用 git hooks 和終端別名作為提醒,但它們要么太麻煩,要么很容易被忽略。所以,我必須找到更好的解決方案。
這篇文章最初發佈在我的部落格上一年多前,但我不斷回來查看它。重新分享給世界:)
Git 將資訊儲存為快照清單。 快照是儲存庫在給定時間點的儲存版本。每次提交都代表 git 世界中的一個快照。
工作樹是專案一個版本的單次簽出。這些檔案從 Git 目錄中的壓縮資料庫中提取出來,並放置在磁碟上供您使用或修改。這是您在暫存和提交之前進行工作的地方。
Git Worktrees 是一種同時管理多個 git 工作樹的方法,無需 git stash 的麻煩。它們允許我們將分支作為儲存庫的子目錄進行工作,從而完全減輕在需要緊急、不相關的更改時隱藏更改的痛苦。
worktree 模組可讓您在儲存庫的相同根目錄中的單獨子目錄中簽出專案的多個版本。傳統方法如下圖所示:
在此範例中,我有兩個隱藏的變更(可能是數百行程式碼)和3 個分支,feature-1、feature-2 和fix -1。當我完成 fix-1 分支的工作並推送它時,我的大腦會跳到下一個任務並完全忘記以前的功能,直到我再次想起它們。
相反,使用工作樹,它看起來像這樣:
對於工作樹,目錄結構將每個工作樹(分支)包含在單獨的目錄中。這使我能夠透過更改當前工作的目錄來無縫地從一個分支切換到另一個分支。我使用這種方法的通常工作流程包括以下內容:
當我想從一個工作樹切換到另一個工作樹時,我所要做的就是使用相同的步驟創建一個不同的工作樹(如果我還沒有創建它),或者簡單地使用VSCode 打開一個不同的目錄並開始破解立即地。
建立工作樹就像為現有分支執行 git worktree add Directory-name Branch-name 或執行 git worktree add Directory-name -b Branch-name 來建立新分支一樣簡單。
完成分支上的工作後,您可以安全地刪除工作樹以停止污染您的目錄結構。只需運行 git worktreeremovedirectory-name 即可。這不會刪除底層分支,因此您可以稍後安全地再次檢查它們。
工作樹是儲存庫分支的簽出,因此不會複製未追蹤的檔案。像 .env 這樣的檔案不會被複製,因此請確保在建立工作樹後複製它們並安裝依賴項(如果存在)。
另請注意,在根儲存庫目錄中執行時,為工作樹建立的目錄將顯示在 git 狀態日誌中。不過,與忘記工作時間相比,這些問題對我來說不算什麼。
感謝您的閱讀!您可以在我的部落格上閱讀更多內容並在 GitHub 贊助商上支持我的工作!
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3