爲什麼有時候切換分支看起來沒有效果?看起來還自動merge了?

初學git,用命令

git branch

*   master

git checkout -b aa, 增加文件m

git checkout master

ls

出現了m文件,我以爲應該沒有的。很奇怪的現象。

然後,

git branch --merged

* master

   aa

看起來好像兩個分支自動merge了一樣。

仔細找了找原因,原來是我理解錯誤。

在git中分支實際上就是個指針,指向一個commit,在master分支時,新建一個分支aa,這個分支會指向master指向的commit,這裏假設它是37de3889好了。而修改工作目錄後,沒有做commit,所以aa依然指向37de3889,而master也是指向37de3889。所以在git看來這倆指針一樣的,就是merge了。

如果在git checkout -bb aa, 增加文件m,之後接着做commit

git add .

git commit -m "your message"

那麼會新產生一個commit,假設它是a222e87好了,這時候aa會指向a222e87,master依然指向原來的37de3889,這個時候git就發現他倆不是一樣的,就是沒有merge了。這個時候git checkout master,會看不到m文件,因爲m文件被git納入管理範圍了,對master來說這個新的commit:a222e87在它的指針後面,它看不到,所以就看不到這個新增加的文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章