2016-10-30 107 views
1

我們必須爲先前存在的項目添加新功能。 因此,每個人都創建自己的分支來製作一個功能。Github分支似乎無法兌換

現在我向我的特定分支添加了一些代碼後,我的隊友告訴我最好重新佈局以使未來的合併更容易。

現在因爲我們剛剛開始項目,很多小文件已被更改,如pom.xml文件,.gitlab-ci.yml文件,給我很多合併錯誤。另外,雖然我一直試圖抓住整個github的東西,但我的隊友在這段時間裏添加了更多的代碼,而且我不能再看到森林倒在樹上了。

所以我想要做的是保持我的新代碼,但更新我的具體分支與主分支的所有代碼。

如果我沒有弄錯,這正是rebase的正確之處嗎?

,而我執行像這樣衍合:

-git rebase master 

它給了我20個合併錯誤。但實際情況是,它會在我的分支開始分支時進行每次更新,並且很多時候它只是同一個文件被重寫。所以我所做的只是將github中的文件粘貼到我的項目(它只有幾個文件)中,然後仔細閱讀每一個合併錯誤,如果它源自我複製粘貼的文件,我只是跳過它們。

(什麼也很奇怪的是,一些文件繼續得到錯誤甚至是艱難的,我只是複製粘貼從分支我正在重定基以確切的文件)

然後當我finnaly闖過它給人的最後一個錯誤我這個

fatal: update_ref failed for ref 'refs/heads/dev_504': 
cannot lock ref  'refs/heads/dev_504': ref refs/heads/dev_504 is at 
XXXXXXX 
but expected  XXXXXXXX 
Could not move back to refs/heads/dev_504 

然後我重新啓動計算機,並得到這個

fatal: cannot resume: .git/rebase-apply/final-commit does not exist. 

然後我放棄底墊,當我再試一次,我又得到20個錯誤。 github是如此複雜,我想要做的就是從主分支中獲取代碼並將其添加到它(它只有1個文件)。

所以或者我可以只是強制從主分支拉,然後只是添加我的文件?我覺得它不是這樣做的。

P.S. :我添加了一個圖書館槽maven,這種影響拉和推任何方式?

感謝

+0

如果你想讓它更容易,你可以通過衍合啓動交互式所有提交初始主(即上提交,你開始你的分支)和南瓜的所有提交到一個單一的一個。然後重新設置master上的單個提交。你仍然會有衝突,但你只需要解決它們一次。 –

回答

0

你可以做的是壓縮/壁球所有提交您分支到一個統一提交。爲此,您必須找到masterfeature_branch的共同祖先。命令git merge-base --all master feature_branch將給出最佳公共祖先的散列(最好是隻有一個散列)。記住散列(X)。現在您需要將您的工作表示爲一次提交。您可以執行交互式重設或重置快捷方式(git reset --softgit commit)。我個人比較喜歡後者。確保你在你的功能分支,並有乾淨的狀態。

git reset --soft X 
git commit -m'MESSAGE' 
git rebase master <= sort conflicts 
git checkout master 
git merge feature_branch <=it will be FastForward merge