看板 PHP 關於我們 聯絡資訊
最近開始使用 Git, 也還算順手,真的挺方便的, 尤其是在同一個專案有兩件以上的待修改問題時, 可以自由切換,並會自動將所有檔案調整到該 branch 的狀態。 不過目前發現一個問題, 假設有 branch A 和 B, 在 B branch 時,如果 stage 裡檔案沒有進行 add 就 checkout 到 A branch, 檔案好像會發生錯亂的問題… 疑問是:在 checkout 之前,是否一定要將目前所在的 branch add 並 commit? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.169.203.53 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1418806613.A.7AA.html
aquarianboy: 可查一下 git stash 12/17 17:27
nakahusa: 喔喔~ 感謝a大,這樣就可以避免不必要的 commit 了 12/17 17:46
nakahusa: 所以如果沒有使用 stash,也沒先進行 add 和 commit 就 12/17 17:47
nakahusa: checkout 到其他 branch 確實會有檔案錯亂的問題對嗎? 12/17 17:47
nakahusa: 還是我使用的方法有錯呢? 12/17 17:47
mmis1000: 預設你沒stash他根本不給你checkout阿 12/17 18:31
m大,我確實在未 commit 時可以 checkout 到其他 branch 耶… git branch test git checkout test vi 1.test git checkout master <--- 可以正常 checkout,此時 git status 會看到 Untracked files: 1.test 而且 master 檔案裡也會多出 1.test git checkout test git add 1.test git checkout master <--- 還是可以正常 checkout,此時 status 會看到 Changes to be committed: new file: 1.test 似乎沒 commit 時就 checkout 會把目前 stage 的狀態帶到 checkout 後的 branch, 也就是說 branch 可以有很多個,可是 stage 只有一個, 不知道我的理解對嗎? ※ 編輯: nakahusa (111.250.64.11), 12/17/2014 23:04:58
nakahusa: 忽然想到 stage 透過 stash 也可以很多個… 應該是說 12/17 23:08
nakahusa: stage 不是對應 branch 而是分開管理的,每個 branch 沒 12/17 23:08
nakahusa: 有自己的 stage,這樣對嗎 QQ" 12/17 23:09
LPH66: 你的問題是你的改動是新增檔案, 這跟修改檔案又不一樣了 12/17 23:13
LPH66: 新增檔案不會對已有的檔案做更改, 所以切換 branch 時除非 12/17 23:14
LPH66: 那個檔案在目標 branch 有才會有衝突 12/17 23:14
LPH66: 因此這種狀況 git 就會讓你切過去 12/17 23:14
L大,我剛有再測試了一下, master 有 1.test 這個檔, git branch test git checkout test vi 1.test 並修改檔案內容, git checkout master <--- 可以 checkout,而且 master 裡的 1.test 也會是修改過的 git status Changes not staged for commit: modified: 1.test git branch test git add 1.test git checkout master <--- 就算有 add 還是可以 checkout 到 master,1.test 也是修 改過後的 git status Changes to be committed: modified: 1.test ※ 編輯: nakahusa (111.250.64.11), 12/17/2014 23:34:58
mmis1000: 看來是,如果兩個branch中的commit過的檔案一樣 12/18 02:34
mmis1000: 就能切過去,如過不一致,他就會要你先stash 12/18 02:35