科技新知

看了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

馬交野


MINECRAFT :我的世界大電影
4DX  職業特工隊:最終清算
4DX  死神來了:血脈
MX4D 劇場版 世界計畫 崩壞的世界與無法歌唱的初音未來 初音透明卡特典場
MX4D 職業特工隊:最終清算
IMAX with Laser 職業特工隊:最終清算
ATEEZ WORLD TOUR TOWARDS THE LIGHT : WILL TO POWER IN CINEMAS
怪獸 8 號: Mission Recon
4DX  ATEEZ WORLD TOUR TOWARDS THE LIGHT : WILL TO POWER IN CINEMAS
關於我和鬼變成家人的那封利是
職業特工隊:最終清算
怪獸8號:Mission Recon
死神來了:血脈
300呎窒息倒數
鐵拳驅魔
獵金•遊戲
送院途中
水餃皇后
雷霆特攻隊*
Until Dawn 死亡輪迴
虎毒不
OMG! 阿媽有喜
劇場版忍者亂太郎 毒菇忍者隊最強之軍師
英語版  MINECRAFT:我的世界大電影
MINECRAFT :我的世界大電影
4DX  職業特工隊:最終清算