初學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在它的指針後面,它看不到,所以就看不到這個新增加的文件。