2015-04-03 121 views
2

我遇到了Git rebase問題,我必須一次又一次地合併代碼,但仍然不成功。Git rebase一次又一次回到同一個地方

我已經從主人那裏切下了我的分支(A)。我開始在我的分支上工作並做出更多的承諾。同時,主人也改變了,接受了一堆提交。現在我試圖將我的分支合併回主。

所以我給,

git co master 
git pull 
git co branch-A 
git rebase master 

現在我得到這樣的衝突消息:合併衝突

據此,樹枝與名稱的新的分支(無分支,基礎重建分支-A) 在此之後,我解決了所有的衝突,然後我給了所有這些文件的git add。

現在我得到的狀態

rebase in progress; onto ad0da3f 
You are currently rebasing branch 'branch-A' on 'ad0da3f'. 
    (all conflicts fixed: run "git rebase --continue") 

這之後我運行git變基--continue和我做的所有更改來解決衝突消失了,它可以追溯到合併和投擲的初始狀態像以前一樣的一大堆衝突!

我的問題是,

  1. 我怎樣才能回來,我已經發出git的變基--continue之前完成所有的衝突解決?
  2. 我怎樣才能不被陷入同一循環需要一次又一次地合併,以將更改從主站點拉到我的分支?
  3. 後,我都從主的變化成功地合併到我的分支,我的分支合併回主人,我可以簡單地使用,

    git的共同主 混帳合併分支-A

還是需要發佈更多命令?

任何幫助,請...

+0

你有沒有試過答案? – androidevil 2015-04-03 13:11:00

回答

2

對我來說,這是很難說有什麼是你錯了,但按照此步驟:

  • 首先,使該文件夾的備份哪裏是你項目,如果 出現問題,您還沒有原始的本地存儲庫。

  • 在主做一個拉帶底墊:

    git checkout master 
    
    git pull --rebase origin master 
    
  • 衍合分支主:

    git checkout branch-A 
    
    git rebase master 
    
  • 當然,如果有一些衝突,解決你的方式已經在做。

當我說改造一個分支與自己,我想說說更新你的分支與遠程。當然,如果只使用分支-A,則不需要在您的本地分支中執行pullpull --rebase。但在掌握這是一個很好的做法,使用rebase來avoid merge commits that result from git pull。當然,rebase會造成一些影響,例如,在你進行rebase之前提交commit。所以,理想的做法是讓所有事情都變成本地化的,只有在你推動你的分支或與主人合併之後。見The Perils of Rebasing

在我的情況下,我喜歡做的是:在重新綁定我的功能分支與主人後,我簽出並掌握並執行git merge <my-branch> --no-ff。這樣我的git歷史有一個提交合併分支'我的分支'。我喜歡我的git歷史。

有關合並vs. rebase的更多信息,請參閱this answer'git merge'和'git rebase'有什麼區別?

+0

嗨Androider,感謝您花時間幫助我。事實上,我發現我並沒有失去所有的改變,只是我需要在每個提交級別進行合併,以決定採取哪種承諾以及忽略哪項承諾。因此,我仍然在解決這些問題,並繼續進行債務重組。我不知道如果我們自己重組一個分支會發生什麼。你能否提供一些關於我的文章來解釋這個問題?再次感謝提供寶貴的建議,以解決我的問題:) – sriram 2015-04-03 13:56:26

+0

我更新了答案。這是沒有必要做我命名rebase與itsel分支的步驟。但是,如果你還有問題,並且它不能正確地進行rebase,那麼將會看到你的兩個分支(master和branch-A)的日誌。至少是這些分支的最後提交。 – androidevil 2015-04-03 15:45:58

+0

非常感謝您提供更多信息。由於在master和我的分支上都有大量的提交,所以我必須解決每個提交併運行,git add和rebase --continue而不是提交(因爲rebase --continue本身就是這樣做的)。這樣做後,所有的衝突都解決了,我把我的分支和主人合併了。 – sriram 2015-04-15 21:13:05

相關問題