我從A(主幹)fork的,一段時間後我的fork behind於A,然後create pull request,然後在我的fork這裡merge,之後我的fork就會自動ahead於A 1 個commit。 。 。
有沒有人遇到跟我一樣的github問題,,,怎麼辦能自然同步於A
走同样的路,发现不同的人生
只要不是fast-forward,pull之後會自動merge,而每次merge就會產生一個commit記錄。
fast-forward
解決方法:
假如你的repo只是晚於主幹,沒有不一樣的commit,那麼就是fast-forward。这时候先pull。這時候先pull到本地上來,跟本地的內容merge在一起。這種情況不會產生額外的commit記錄。然後再將本機程式碼push到自己的遠端repo上。
pull
如果不滿足fast-forward条件,那么需要pull --rebase到本地,并完成rebase操作。成功后再push條件,那麼需要pull --rebase到本地,並完成rebase操作。成功後再push到遠端repo。
pull --rebase
rebase
push
附: 一份關於「如何 ~~變基~~ rebase」的資料: https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request
所以你要用rebase…
如果你在自己的分支上什麼也沒乾,那麼無論是rebase還是merge之後你的分支就和A的head是一樣的,沒有多一個commit。 當然如果你自己改了什麼東西,那就怎麼也不可能完全同步了,不然你還要版本控制系統乾神馬。 但rebase和merge的差別就是,merge在這一點會創造一個新的change,rebase只是把你在這個分支上的變化歷史接在A的歷史後面,沒有新的changelog。
只要不是
fast-forward
,pull之後會自動merge,而每次merge就會產生一個commit記錄。解決方法:
假如你的repo只是晚於主幹,沒有不一樣的commit,那麼就是
fast-forward
。这时候先pull
。這時候先pull
到本地上來,跟本地的內容merge在一起。這種情況不會產生額外的commit記錄。然後再將本機程式碼push到自己的遠端repo上。如果不滿足
fast-forward
条件,那么需要pull --rebase
到本地,并完成rebase
操作。成功后再push
條件,那麼需要pull --rebase
到本地,並完成rebase
操作。成功後再push
到遠端repo。附: 一份關於「如何 ~~變基~~ rebase」的資料: https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request
所以你要用rebase…
如果你在自己的分支上什麼也沒乾,那麼無論是rebase還是merge之後你的分支就和A的head是一樣的,沒有多一個commit。
當然如果你自己改了什麼東西,那就怎麼也不可能完全同步了,不然你還要版本控制系統乾神馬。
但rebase和merge的差別就是,merge在這一點會創造一個新的change,rebase只是把你在這個分支上的變化歷史接在A的歷史後面,沒有新的changelog。