我在一片泡菜。什麼是合併上游而不丟失變更的正確方法?
幾個月前我開始在一個回購的分支上進行開發。我做了一些改變。我正要推我的代碼回主作爲拉動請求,但我意識到有在此期間,不少變化......
所以,following the instructions at Github下「拉上游的變更」我想:
$ git remote add upstream ... # savon/httpi
$ git fetch upstream
$ git merge upstream/master
$ git push origin/master # coldnebo/httpi
但是,現在我的叉子相當混亂。我還是寧願使用Git新手,所以不是試圖猜測的術語是什麼,我會簡單地告訴你什麼是我和我的預期:
- 想這樣的:(顯示7更改過的文件112添加和5刪除)。 https://github.com/savonrb/httpi/pull/59/files
這是我想要的差異。有沒有任何方法來重新設定/恢復,並做到這一點,而不會失去我的變化?
- 得到這個:(324個提交幾乎覆蓋整個項目加4新枝......哎喲!) https://github.com/coldnebo/httpi/commits/master
什麼亂七八糟的。
也許git pull
會更好?
這並不是很多變化,所以如果它是不可恢復的,我總是可以手動對它進行差異化和重新編寫,但我正在尋找「正確的方式」來做到這一點。
爲什麼要防止合併提交?你讓它聽起來像他們錯了或邪惡或什麼? –
@CharlesBailey合併提交併非邪惡,但它們是工作流程中最無用和最隱含的提交。 rebase的另一個特點是它仍然是歷史,它不會在你提交之前/之後提交所有新的提交,它會把它們放在需要的地方。 –
我想你可能誤解了合併提交和歷史。將兩個(或更多)並行工作流合併在一起時,合併提交會正確記錄。 Rebase僞裝了真實的歷史,因爲它將原始變化與合併結合在一起,假裝你在歷史的不同時間點對原來的變化進行了修改。 Rebase做了什麼,但保留了歷史。我不確定是什麼讓你說合並提交是模糊的或無用的;他們準確地記錄了在合併中完成的工作,絕對不是模糊的,可能非常有用。 –