git 切換分支時會把未add或未commit的內容帶過去, 這一點值得注意。
為什么呢?
因為未add的內容不屬於任何一個分支, 未commit的內容也不屬於任何一個分支。 也就是說,對於所有分支而言, 工作區和暫存區是公共的。
要想在分支間切換, 又不想又上述影響, 怎么辦呢? git stash搞起。要注意,在當前分支git stash的內容, 在其他分支也可以git stash pop出來,為什么? 因為:工作區和暫存區是公共的。
少說了一點,就是這兩個分支是完全相同時,(即最后一次commit是完全相同)才可以在不add commit 新修改的情況下切換分支,但注意這個時候切換分支會把修改帶到切換后的分支。例如你在b1分支修改文件,切換到b2,在b2上add commit,則這個commit是屬於b2的,你commit之后在切換回b1,查看該文件,你會發現修改沒了,切換回b2查看該文件,修改有了,再次證明最后在哪個分支commit,這個commit就屬於那個分支的。 如果兩個分支完全不同,例:b1上新建一個分支b2,這個時候兩個分支還是相同的,如果b1哪怕提交了一個commit,這兩個分支就會變得完全不同了,兩個完全不同的分支,如果你在b1上有修改,是沒辦法switch到b2的,會報錯:【error: Your local changes to the following files would be overwritten by checkout:。。。 】
