国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Git 中上下文切換的 4 種方式

系統 Linux
比較 Git 中四種切換分支的方法的優缺點。所有大量使用 Git 的人都會用到某種形式的上下文切換。有時這只會給你的工作流程增加少量的開銷,但有時,這可能是一段痛苦的經歷。

[[401434]]

比較 Git 中四種切換分支的方法的優缺點。

所有大量使用 Git 的人都會用到某種形式的上下文切換。有時這只會給你的工作流程增加少量的開銷,但有時,這可能是一段痛苦的經歷。

讓我們用以下這個例子來討論一些常見的上下文切換策略的優缺點:

假設你在一個名為 feature-X 的分支中工作。你剛剛發現你需要解決一個無關的問題。這不能在 feature-X 分支中完成。你需要在一個新的分支 feature-Y 中完成這項工作。

方案 1:暫存 + 分支

解決此問題最常見的工作流程可能如下所示:

  1. 停止分支 feature-X 上的工作
  2. git stash
  3. git checkout -b feature-Y origin/main
  4. 一頓鼓搗,解決 feature-Y 的問題
  5. git checkout feature-X 或 git switch -
  6. git stash pop
  7. 繼續在 feature-X 中工作

優點: 這種方法的優點在于,對于簡單的更改,這是一個相當簡單的工作流程。它可以很好地工作,特別是對于小型倉庫。

缺點: 使用此工作流程時,一次只能有一個工作區。另外,根據你的倉庫的狀態,使用暫存是一個麻煩的環節。

方案 2:WIP 提交 + 分支

這個解決方案和前一個非常相似,但是它使用 WIP(正在進行的工作Work in Progress)提交而不是暫存。當你準備好切換回來,而不是彈出暫存時,git reset HEAD~1 會展開 WIP 提交,你可以自由地繼續,就像之前的方案一樣,但不會觸及暫存。

  1. 停止分支 feature-X 上的工作
  2. git add -u(僅僅添加修改和刪除的文件)
  3. git commit -m "WIP"
  4. git checkout -b feature-Y origin/master
  5. 一頓鼓搗,解決 feature-Y 的問題
  6. git checkout feature-X 或 git switch -
  7. git reset HEAD~1

優點: 對于簡單的更改,這是一個簡單的工作流,也適合于小型倉庫。你不需要使用暫存。

缺點: 任何時候都只能有一個工作區。此外,如果你或你的代碼審閱者不夠謹慎,WIP 提交可能會合并到最終產品。

使用此工作流時,你永遠不要想著將 --hard 添加到 git reset。如果你不小心這樣做了,你應該能夠使用 git reflog 恢復提交,但是你最好完全避免這種情況發生,否則你會聽到心碎的聲音。

方案 3:克隆一個新倉庫

在這個解決方案中,不是創建新的分支,而是為每個新的功能分支創建存儲庫的新克隆。

優點: 你可以同時在多個工作區中工作。你不需要 git stash 或者是 WIP 提交。

缺點: 需要考慮倉庫的大小,因為這可能會占用大量磁盤空間(淺層克隆可以幫助解決這種情況,但它們可能并不總是很合適。)此外,你的倉庫克隆將互不可知。因為他們不能互相追蹤,所以你必須手動追蹤你的克隆的源倉庫。如果需要 git 鉤子,則需要為每個新克隆設置它們。

方案 4:git 工作樹

要使用此解決方案,你可能需要了解 git add worktree。如果你不熟悉 Git 中的工作樹,請不要難過。許多人多年來都對這個概念一無所知。

什么是工作樹?

將工作樹視為倉庫中屬于項目的文件。本質上,這是一種工作區。你可能沒有意識到你已經在使用工作樹了。開始使用 Git 時,你將自動獲得第一個工作樹。

  1. $ mkdir /tmp/foo && cd /tmp/foo
  2. $ git init
  3. $ git worktree list
  4. /tmp  0000000 [master]

你可以在以上代碼看到,甚至在第一次提交前你就有了一個工作樹。接下來去嘗試再添加一個工作樹到你的項目中吧。

添加一個工作樹

想要添加一個新的工作樹你需要提供:

  1. 硬盤上的一個位置
  2. 一個分支名
  3. 添加哪些分支
  1. $ git clone https://github.com/oalders/http-browserdetect.git
  2. $ cd http-browserdetect/
  3. $ git worktree list
  4. /Users/olaf/http-browserdetect 90772ae [master]
  5.  
  6. $ git worktree add ~/trees/oalders/feature-X -b oalders/feature-X origin/master
  7. $ git worktree add ~/trees/oalders/feature-Y -b oalders/feature-Y e9df3c555e96b3f1
  8.  
  9. $ git worktree list
  10. /Users/olaf/http-browserdetect 90772ae [master]
  11. /Users/olaf/trees/oalders/feature-X 90772ae [oalders/feature-X]
  12. /Users/olaf/trees/oalders/feature-Y e9df3c5 [oalders/feature-Y]

與大多數其他 Git 命令一樣,你需要在倉庫路徑下使用此命令。一旦創建了工作樹,就有了隔離的工作環境。Git 倉庫會跟蹤工作樹在磁盤上的位置。如果 Git 鉤子已經在父倉庫中設置好了,那么它們也可以在工作樹中使用。

請注意到,每個工作樹只使用父倉庫磁盤空間的一小部分。在這種情況下,工作樹需要只大約三分之一的原始磁盤空間。這這非常適合進行擴展。如果你的倉庫達到了千兆字節的級別,你就會真正體會到工作樹對硬盤空間的節省。

  1. $ du -sh /Users/olaf/http-browserdetect
  2. 2.9M
  3.  
  4. $ du -sh /Users/olaf/trees/oalders/feature-X
  5. 1.0M

優點: 你可以同時在多個工作區中工作。你不需要使用暫存。Git 會跟蹤所有的工作樹。你不需要設置 Git 鉤子。這也比 git clone 更快,并且可以節省網絡流量,因為你可以在飛行模式下執行此操作。你還可以更高效地使用磁盤空間,而無需借助于淺層克隆。

缺點: 這是個需要你額外學習和記憶的新東西,但是如果你能養成使用這個功能的習慣,它會給你豐厚的回報。

額外的小技巧

有很多方式可以清除工作樹,最受歡迎的方式是使用 Git 來移除工作樹:

  1. git worktree remove /Users/olaf/trees/oalders/feature-X

如果你喜歡 RM 大法,你也可以用 rm -rf 來刪除工作樹。

  1. rm -rf /Users/olaf/trees/oalders/feature-X

但是,如果執行此操作,則可能需要使用 git worktree prune 清理所有剩余的文件。或者你現在可以跳過清理,這將在將來的某個時候通過 git gc 自行完成。

注意事項

如果你準備嘗試 git worktree,請記住以下幾點:

  • 刪除工作樹并不會刪除該分支。
  • 可以在工作樹中切換分支。
  • 你不能在多個工作樹中同時簽出同一個分支。
  • 像其他命令一樣,git worktree 需要從倉庫內運行。
  • 你可以同時擁有許多工作樹。
  • 要從同一個本地倉庫簽出創建工作樹,否則它們將互不可知。

git rev-parse

最后一點注意:在使用 git worktree 時,倉庫根所在的位置可能取決于上下文。幸運的是,git rev parse 可以讓你區分這兩者。

  • 要查找父倉庫的根目錄,請執行以下操作:
    1. git rev-parse --git-common-dir
  • 要查找你當前所在倉庫的根目錄,請執行:
    1. git rev-parse --show-toplevel

根據你的需要選擇最好的方法

就像很多事情一樣,TIMTOWDI(條條大道通羅馬there's more than one way to do it)。重要的是你要找到一個適合你需要的工作流程。你的需求可能因手頭的問題而異。也許你偶爾會發現自己將 git worktree 作為版本控制工具箱中的一個方便工具。

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-04-24 15:37:26

LinuxCPU

2019-05-06 14:36:48

CPULinux寄存器

2022-09-26 23:36:33

Linux系統CPU

2022-04-25 11:27:34

LinuxCPU

2024-08-27 09:46:39

Go協程效率

2020-09-28 08:44:17

Linux內核

2022-09-05 08:02:10

上下文切換服務器

2024-11-06 12:59:42

多線程銷毀線程切換

2024-03-19 09:15:12

服務器CPUI/O

2023-11-24 16:18:15

操作系統Linux

2025-12-08 01:00:00

2025-05-12 00:00:15

2017-05-11 14:00:02

Flask請求上下文應用上下文

2020-02-21 10:09:06

調度進程線程

2012-12-31 10:01:34

SELinuxSELinux安全

2022-09-14 13:13:51

JavaScript上下文

2025-04-08 00:22:00

C#異步編程

2025-12-08 02:35:00

上下文工程系統AI

2024-01-09 18:09:43

模型方式DMA

2023-07-11 10:02:23

點贊
收藏

51CTO技術棧公眾號

heyzo国产| 激情小说网站亚洲综合网| 人妻内射一区二区在线视频 | 午夜亚洲一区| 亚洲精品一线二线三线| 欧美一区1区三区3区公司| 成人福利网址| 你微笑时很美电视剧整集高清不卡| 国产无一区二区| 91在线网站视频| 熟妇人妻va精品中文字幕| 精品久久国产字幕高潮| 亚洲国产视频在线| 欧美夫妻性生活| 国产伦精品一区二区| 922tv免费观看在线| 一本到12不卡视频在线dvd| 91精品国产综合久久精品| 小说区视频区图片区| yiren22亚洲综合| 亚洲精品五月天| 久久青青草综合| 欧美gay囗交囗交| 久久久久亚洲综合| 国产+人+亚洲| 三级网站在线| 大陆精大陆国产国语精品| 久久人人爽人人| 国产香蕉视频在线观看| 国产精品一区一区三区| 国产超级av在线| 国产精伦一区二区三区| 国产精品视频不卡| 久久国产亚洲精品| 欧美性生活大片免费观看网址| 91欧美日韩一区| 卡一卡二国产精品| 日韩亚洲一区二区| 欧美a级在线| 午夜精品久久久久久99热软件 | 欧美一进一出视频| 久久网这里都是精品| 大陆极品少妇内射aaaaaa| 久久福利毛片| 久久不射电影网| 四虎精品在线| 欧美日韩精品免费| 一二三四社区在线视频| 国产视频在线观看一区二区三区 | 国产精品国产亚洲精品看不卡| 日韩国产欧美一区二区三区| 国产精品视频一二三四区| 欧美韩日一区| 国产精品夜夜夜爽张柏芝| 最新中文字幕一区二区三区| 国产精品无码电影在线观看| 性做久久久久久| 天堂av在线网站| 亚洲成人激情在线观看| 欧美1区3d| 久久久久久久999精品视频| 国产日韩欧美在线播放不卡| 污视频网站在线| 丝袜亚洲另类欧美重口| 黄色在线论坛| 亚洲自拍欧美另类| 国产精品久久久久aaaa樱花| 亚洲一区二区自拍| 日本一区二区免费在线| 国产欧美88| 成人精品aaaa网站| 亚洲成av人片| 污视频网站在线| 92看片淫黄大片看国产片| 午夜在线一区二区| 69国产精品成人在线播放| 激情久久五月天| 黄页网站在线观看免费| 日韩在线www| 日韩高清一区| 日本19禁啪啪吃奶大尺度| 亚洲免费观看高清完整版在线观看 | 亚洲国产日本| 尤物视频免费在线观看| 亚洲天天做日日做天天谢日日欢| www.26天天久久天堂| 法国空姐在线观看免费| 色婷婷精品久久二区二区蜜臀av | 久久综合影院| 亚洲精品二区| 极品日韩av| 欧美久久天堂| 香蕉视频在线网址| 久久99热这里只有精品| 777午夜精品电影免费看| 91福利电影| 国产成人av网| 欧美a一区二区| 精品久久久久久久无码| 欧美自拍丝袜亚洲| 电影一区二区三| 最近中文字幕mv2018在线高清| 51精品国产黑色丝袜高跟鞋 | 在线观看日韩一区| 欧美日本三区| 尤物免费看在线视频| 欧洲s码亚洲m码精品一区| 国产精品情趣视频| 亚洲国产最新| 天天色综合4| 蜜臀久久99精品久久久久久宅男| 黄色精品一二区| 中文字幕不卡三区视频| 日本一区二区久久精品| 国产乱妇无码大片在线观看| 老司机在线精品视频| 毛片大全在线观看| 日韩a在线看| 国产又黄又猛又粗| 欧美一级淫片丝袜脚交| 亚洲一区二区三区四区在线观看| 电影亚洲一区| 成人激情综合网| 欧美另类69精品久久久久9999| 制服丝袜亚洲播放| 色噜噜偷拍精品综合在线| 91视频免费观看| 国产不卡在线播放| 欧美free嫩15| 亚洲同志男男gay1069网站| 三级中文字幕在线观看| 女子免费在线观看视频www| 人人干视频在线| 日本手机在线视频| 亚洲美免无码中文字幕在线| 国产美女永久无遮挡| 97精品国产97久久久久久免费 | 国产精品国三级国产av| 欧美极品xxxx| 岛国av一区二区三区| 日韩中文字幕亚洲一区二区va在线 | 91久久精品www人人做人人爽| 国产高清在线观看免费不卡| 中文字幕午夜精品一区二区三区 | 国产天堂在线播放| 玛丽玛丽电影原版免费观看1977| 欧美一级午夜免费电影| 99久久久无码国产精品| 99久久www免费| 亚洲在线一区| 国内不卡的二区三区中文字幕| 99精品热视频| 亚洲精品自拍动漫在线| 青青草成人在线观看| 成人avav影音| 亚洲乱码一区二区三区在线观看| 天天综合网天天综合色| 制服丝袜成人动漫| 91精品欧美一区二区三区综合在| 激情懂色av一区av二区av| 精品国产电影一区| 岛国av在线播放| 国产偷自视频区视频一区二区| 亚洲欧美日韩中文在线制服| 中文日韩欧美| 黄色在线播放网站| 欧美精品中文字幕一区二区| 精品国产百合女同互慰| 国产成人日日夜夜| 国产日韩一区二区三免费高清| 92看片淫黄大片一级| 91精品国产色综合久久不卡98口 | 色中色在线视频| 国产在线精品一区| 亚洲欧美制服中文字幕| 欧美国产97人人爽人人喊| 成人区精品一区二区婷婷| 在线观看免费网站黄| 操bbb操bbb| 91精品国产沙发| 欧美日韩精品一区二区三区蜜桃| 日韩va欧美va亚洲va久久| 亚洲免费福利| 北条麻妃av高潮尖叫在线观看| 国产精品久久久久久网站| 欧美蜜桃一区二区三区| 成人av在线电影| 嫩草一区二区三区| 欧美日韩在线视频免费观看| 又色又爽又高潮免费视频国产| 97操在线视频| www.欧美三级电影.com| 色综合天天综合在线视频| 国产精品91一区二区| 久久密一区二区三区| 日韩网站中文字幕| 免费在线黄色网址| 999香蕉视频| 日本在线免费观看一区| 国内免费精品永久在线视频|