git rebase,跟蹤'本地'和'遠程'在進行git rebase時,我常常難以解決在解決沖突時“本地”和“遠程”發生的事情。我有時會產生這樣的印象:他們將一方提交交換到另一方提交。這可能(肯定)因為我還沒有正確理解。變基礎時,誰是'本地',誰是'偏遠'?(我使用P4Merge解決沖突)
3 回答

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
底線
git rebase
LOCAL =你在基礎重建的基礎上
REMOTE =承諾你正在向上移動
git merge
LOCAL =您要合并的原始分支
REMOTE =你正在合并的另一個分支
換句話說,LOCAL始終是原始版本,而REMOTE總是那些之前沒有提交過的人,因為它們被合并或重新定位在頂層
證明給我看!
當然。不要相信我的話!這是一個簡單的實驗,您可以自己查看。
首先,確保正確配置了git mergetool。(如果你沒有,你可能無論如何都不會閱讀這個問題。)然后找一個可以使用的目錄。
設置您的存儲庫:
md LocalRemoteTestcd LocalRemoteTest
創建初始提交(使用空文件):
git initnotepad file.txt (use the text editor of your choice) (save the file as an empty file)git add -Agit commit -m "Initial commit."
在非master的分支上創建提交:
git checkout -b notmasternotepad file.txt (add the text: notmaster) (save and exit)git commit -a -m "Add notmaster text."
在主分支上創建提交:
git checkout masternotepad file.txt (add the text: master) (save and exit)git commit -a -m "Add master text."gitk --all
此時,您的存儲庫應如下所示:
現在進行rebase測試:
git checkout notmastergit rebase master (you'll get a conflict message)git mergetool LOCAL: master REMOTE: notmaster
現在進行合并測試。關閉mergetool而不保存任何更改,然后取消rebase:
git rebase --abort
然后:
git checkout mastergit merge notmastergit mergetool LOCAL: master REMOTE: notmastergit reset --hard (cancels the merge)
您的結果應與頂部顯示的結果相同。
添加回答
舉報
0/150
提交
取消