簡體   English   中英

git rebase從不相關的分支中獲取變化?

[英]git rebase pulls in changes from unrelated branch?

我是一個新手,所以不要笑得太厲害......

我在分支A上做了一些工作並做了一些提交。 然后,不得不進行修補程序更改,所以我創建了分支B並更改了一些文件。 然后,因為主人沒有改變我認為如果我這樣做會更簡單和更清楚:

git rebase master
git checkout master
git merge B

但是,這應用了分支A的變化。我不理解什么? 這不可能是它應該工作的方式,是嗎?

當您創建分支B ,您在分支A ,因此分支B的基礎包含您在分支A中執行的所有工作。 這就是為什么那些分支A變化現在是master 從圖形上看,您有以下情況:

branchA: A -- B -- C
branchB: A -- B -- C -- D

master制作修補程序的正確策略是從master創建一個分支:

# assuming you start on branch B
git checkout master
git checkout -b master_hotfix
# make the fix
git commit -m 'made the hotfix'
git checkout master
git merge master_hotfix
# carry on as you were
git checkout branchB

要撤消已完成的操作,可以嘗試在發生錯誤合並之前將master分支重置為提交。 輸入git log並計算與branchB合並后提交的提交branchB 然后輸入:

git reset --hard HEAD~N

其中N是您希望從master刪除的提交數。 然后應用我上面給出的步驟正確地創建此修補程序。 請注意,如果您已將本地master服務器推送到遠程服務器,則不應使用git reset 在這種情況下,您可以嘗試使用git revert ,但是將master保持branchB可能是有意義的,並且只有在您完成工作后再次合並branchB

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM