[請益] Git checkout 疑問

看板PHP作者 (NA)時間11年前 (2014/12/17 16:56), 11年前編輯推噓1(1014)
留言15則, 4人參與, 最新討論串1/1
最近開始使用 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

12/17 17:27, , 1F
可查一下 git stash
12/17 17:27, 1F

12/17 17:46, , 2F
喔喔~ 感謝a大,這樣就可以避免不必要的 commit 了
12/17 17:46, 2F

12/17 17:47, , 3F
所以如果沒有使用 stash,也沒先進行 add 和 commit 就
12/17 17:47, 3F

12/17 17:47, , 4F
checkout 到其他 branch 確實會有檔案錯亂的問題對嗎?
12/17 17:47, 4F

12/17 17:47, , 5F
還是我使用的方法有錯呢?
12/17 17:47, 5F

12/17 18:31, , 6F
預設你沒stash他根本不給你checkout阿
12/17 18:31, 6F
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

12/17 23:08, , 7F
忽然想到 stage 透過 stash 也可以很多個… 應該是說
12/17 23:08, 7F

12/17 23:08, , 8F
stage 不是對應 branch 而是分開管理的,每個 branch 沒
12/17 23:08, 8F

12/17 23:09, , 9F
有自己的 stage,這樣對嗎 QQ"
12/17 23:09, 9F

12/17 23:13, , 10F
你的問題是你的改動是新增檔案, 這跟修改檔案又不一樣了
12/17 23:13, 10F

12/17 23:14, , 11F
新增檔案不會對已有的檔案做更改, 所以切換 branch 時除非
12/17 23:14, 11F

12/17 23:14, , 12F
那個檔案在目標 branch 有才會有衝突
12/17 23:14, 12F

12/17 23:14, , 13F
因此這種狀況 git 就會讓你切過去
12/17 23:14, 13F
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

12/18 02:34, , 14F
看來是,如果兩個branch中的commit過的檔案一樣
12/18 02:34, 14F

12/18 02:35, , 15F
就能切過去,如過不一致,他就會要你先stash
12/18 02:35, 15F
文章代碼(AID): #1KaKLLUg (PHP)
文章代碼(AID): #1KaKLLUg (PHP)