久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何使用Git工作樹對你的代碼進行自由實驗

165次閱讀
沒有評論

共計 2405 個字符,預計需要花費 7 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家分享的是有關如何使用 Git 工作樹對你的代碼進行自由實驗的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

獲得自由嘗試的權利,同時在你的實驗出錯時可以安全地擁有一個新的、鏈接的克隆存儲庫。

Git   的設計部分是為了進行實驗。如果你知道你的工作會被安全地跟蹤,并且在出現嚴重錯誤時有安全狀態存在,你就不會害怕嘗試新的想法。不過,創新的部分代價是,你很可能會在這個過程中弄得一團糟。文件會被重新命名、移動、刪除、更改、切割成碎片;新的文件被引入;你不打算跟蹤的臨時文件會在你的工作目錄中占據一席之地等等。

簡而言之,你的工作空間變成了紙牌屋,在“快好了!”和“哦,不,我做了什么?”之間岌岌可危地平衡著。那么,當你需要把倉庫恢復到下午的一個已知狀態,以便完成一些真正的工作時,該怎么辦?我立刻想到了  git branch  和  git stash  這兩個經典命令,但這兩個命令都不是用來處理未被跟蹤的文件的,而且文件路徑的改變和其他重大的轉變也會讓人困惑,它們只能把工作暫存(stash)起來以備后用。解決這個需求的答案是 Git 工作樹。

什么是 Git 工作樹

Git  工作樹 worktree 是 Git 倉庫的一個鏈接副本,允許你同時簽出多個分支。工作樹與主工作副本的路徑是分開的,它可以處于不同的狀態和不同的分支上。在 Git 中新建工作樹的好處是,你可以在不干擾當前工作環境的情況下,做出與當前任務無關的修改、提交修改,然后在以后合并。

直接從  git-worktree  手冊中找到了一個典型的例子:當你正在為一個項目做一個令人興奮的新功能時,你的項目經理告訴你有一個緊急的修復工作。問題是你的工作倉庫(你的“工作樹”)處于混亂狀態,因為你正在開發一個重要的新功能。你不想在當前的沖刺中“偷偷地”進行修復,而且你也不愿意把變更暫存起來,為修復創建一個新的分支。相反,你決定創建一個新的工作樹,這樣你就可以在那里進行修復:

$ git branch | tee* devtrunk$ git worktree add -b hotfix ~/code/hotfix trunkPreparing ../hotfix (identifier hotfix)HEAD is now at 62a2daf commit

在你的  code  目錄中,你現在有一個新的目錄叫做  hotfix,它是一個與你的主項目倉庫相連的 Git 工作樹,它的  HEAD  停在叫做  trunk  的分支上?,F在你可以把這個工作樹當作你的主工作區來對待。你可以把目錄切換到它里面,進行緊急修復、提交、并最終刪除這個工作樹:

$ cd ~/code/hotfix$ sed -i  s/teh/the/  hello.txt$ git commit --all --message  urgent hot fix

一旦你完成了你的緊急工作,你就可以回到你之前的任務。你可以控制你的熱修復何時被集成到主項目中。例如,你可以直接將變更從其工作樹推送到項目的遠程存儲庫中:

$ git push origin HEAD$ cd ~/code/myproject

或者你可以將工作樹存檔為 TAR 或 ZIP 文件:

$ cd ~/code/myproject$ git archive --format tar --output hotfix.tar master

或者你可以從單獨的工作樹中獲取本地的變化:

$ git worktree list/home/seth/code/myproject 15fca84 [dev]/home/seth/code/hotfix 09e585d [master]

從那里,你可以使用任何最適合你和你的團隊的策略合并你的變化。

列出活動工作樹

你可以使用  git worktree list  命令獲得工作樹的列表,并查看每個工作樹簽出的分支:

$ git worktree list/home/seth/code/myproject 15fca84 [dev]/home/seth/code/hotfix 09e585d [master]

你可以在任何一個工作樹中使用這個功能。工作樹始終是連接的(除非你手動移動它們,破壞 Git 定位工作樹的能力,從而切斷連接)。

移動工作樹

Git 會跟蹤項目  .git  目錄下工作樹的位置和狀態:

$ cat ~/code/myproject/.git/worktrees/hotfix/gitdir/home/seth/code/hotfix/.git

如果你需要重定位一個工作樹,必須使用  git worktree move;否則,當 Git 試圖更新工作樹的狀態時,就會失?。?/p>

$ mkdir ~/Temp$ git worktree move hotfix ~/Temp$ git worktree list/home/seth/code/myproject 15fca84 [dev]/home/seth/Temp/hotfix 09e585d [master]

移除工作樹

當你完成你的工作時,你可以用  remove  子命令刪除它:

$ git worktree remove hotfix$ git worktree list/home/seth/code/myproject 15fca84 [dev]

為了確保你的  .git  目錄是干凈的,在刪除工作樹后使用  prune  子命令:

$ git worktree remove prune

感謝各位的閱讀!關于“如何使用 Git 工作樹對你的代碼進行自由實驗”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-07發表,共計2405字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 南乐县| 泽州县| 安乡县| 诸城市| 南岸区| 铅山县| 右玉县| 汶川县| 东光县| 清原| 沁源县| 楚雄市| 宽甸| 绥芬河市| 托克逊县| 延安市| 临夏市| 新余市| 襄樊市| 万全县| 凭祥市| 邳州市| 宁波市| 大足县| 泰兴市| 庄河市| 沙洋县| 凤山县| 鄂托克前旗| 建宁县| 琼结县| 丁青县| 周至县| 平邑县| 邢台市| 金昌市| 台前县| 区。| 南宁市| 岳阳县| 翁牛特旗|