科技新知

看了Git 大神的影片 part two,才知道原來切換git分支還是有不同的做法。傳統中,我們使用git checkout BRANCH_NAME_1 來切換到我們想要的分支。通常這樣做,代表我們放棄原來的工作環境,換到另一個工作環境中。

這樣做很好,對不對?

是的。但有些時候,我們只是被逼離開原本的工作環境,跳到一個過去的分支/節點去查一些東西,或者修正一些東西。更什的是我們原本的工作環境都還是混亂狀態下,我們不想做commit(提交),我們只好用git stash,暫時將工作環境存起,然後再git checkout BRANCH_NAME_1。在你想做的事做完後,再git checkout OLD_BRANCH

看起來其實也沒有很麻煩,是不是?

但其實當你的專案有一定大小,你在不同版本跳來跳去,你的IDE就會不斷地重新編譯。更不幸的是,當你的不同版本中有模組數量的差異,弱一點的IDE,什至會攪死它的cache,之後就會發生鬼打牆。為解決IDE引發的問題,筆者有時會直接cp -r YOUR_PROJECT TEMP_PROJECT,在一個新資料夾下另起爐灶。那就是有兩個不同的資料夾裝載著你的專案。

這樣應該沒有問題了吧,是不是?這次是真的可以了,扣除了筆者個人健忘的問題,就沒什麼問題了。

不知大家有沒有經驗,連續commit了幾次,但最後一次commit卻忘了push(與伺服器同步),然後就跳到其他地方繼續工作。如果我們在同一個git repository下,我們commit了但忘了push,即使我們git checkout去了其他分支,用git GUI畫出commit graph時,也至少可以提醒筆者有一個未與伺服器同步的分支。但如果當初我們用的是cp,那就沒戲唱了,什至乎當初複制了去哪裏都忘了。(當你老闆同時要你跟多個專案,健忘真的很容易發生。)

這問題有解嗎?有的,git在2.5版本以後,就提供了一個git worktree的指令。它有點像cp 指令,更重要的是,它打通了兩個資料夾下的隱藏資料庫.git,當大家在那兩個資料夾底下,都可以看到另一方的存在。大家可以用git branch -agit log --oneline --graph來看看。

詳細的指令介紹:git worktree

git 大神的影片 Part 2

馬交野


4DX  神奇4俠: 英雄第一步
藍精靈
名偵探柯南:獨眼的殘像
4DX  名偵探柯南 獨眼的殘像
MX4D 名偵探柯南 獨眼的殘像
劇場版《名偵探柯南:獨眼的殘像》
末日廝殺橋 澳門韓國電影節 2025
再‧見熊貓福寶 澳門韓國電影節 2025
哈爾濱 澳門韓國電影節 2025
復國者聯盟 澳門韓國電影節 2025
MX4D 鬼滅之刃 劇場版 無限列車篇
IMAX with Laser 神奇4俠: 英雄第一步
醬園弄.懸案
劇場版 GIVEN 被贈與的未來 -To The Sea-
醬園弄·懸案
SEISHUN INOSHISHI ATARASHII GAKKO! THE MOVIE
4DX  F1電影
MX4D F1電影
F1 電影
F1電影
愉快動物餅大電影
名偵探柯南 獨眼的殘像
電影多啦A夢:大雄之繪畫世界物語
神奇4俠:英雄第一步
殺神JOHN WICK外傳:芭蕾殺姬
28 年後
人工殺姬 2.0
外星奇遇記 英語版
舊年暑假搞乜鬼
神奇4俠: 英雄第一步
藍精靈大電影
超人
外星奇遇記
職業特工隊:最終清算
侏羅紀世界:重生
史迪仔
死神來了:血脈
4DX  神奇4俠: 英雄第一步