場景描述:fork大神的代碼后,本地啟動可能會做配置更改,好不容啟動好了,大神那更新了(新增功能,bug修改),這時候怎么把大神的代碼同不來,而不影響自己的更改?
搜索了半天也沒有幾個很有效的帖子,只能自己試了,以nutzwk,‘鯊總’的源碼實驗,其實隨便自己建個項目也一樣(主要是默默推薦下nutzwk框架---后頭有個團隊,在做開源)。
動手!
1,源碼上新增兩個類文件TestService和對應實現類TestServiceImpl
2,將對應的變更文件上傳(commit + push)
3,遠程倉庫(網頁版)是看得到兩個新增文件的。
4,這時候,場景出現了。大神更新了下版本,我又想同步人家的代碼,於是需要強制同步:如下圖,點擊確定。
5,同步結束后,網頁版里再找剛才提的兩個文件,不見了。。。是的,確實不見了(理所應當,本來人家的源碼里也是沒有這兩個文件,強制同步別人代碼,當然跟別人代碼一致了)。
6,這時候去idea,同步下遠程代碼(已經跟fork的原始代碼一致了)
7,同步的結果就是:並沒有任何更新,(這里是因為我實驗之前已經通過過,第一次同步的時候,更新版本的代碼會有更新日志)
8,這時候,再看看自己的代碼,倆文件還在~,是的,還在~~,刷新下項目,還在~~,沒錯,這是因為這來文件已經提交到本地的倉庫了,更新的是遠端的,這時候本地倉庫與遠程倉庫的差異就是你自己改動的代碼
9,這時候更改的列表里是沒有記錄的,因為之前改動的已經commit了。
10,再看看push彈窗,這里有之前的提交記錄,如果這個時候再次push,就會把自己的改動,再次推到遠端倉庫
11,這里測試的場景,是新增文件,並么有測試存在沖突的情況,比如,你改動一個函數,大神也改動了。這時你的改動遠端被覆蓋了,同步到本地后,本地是否會存在沖突?