2017-04-04 69 views
0

我是git的新手,我仍然試圖全面掌握fork,起源,上游和分支如何工作。如何修復我損壞的本地git repo分支並重新綁定我的Github分叉?

我在Github中創建了一個fork,創建了fork的本地副本,確定了我的上游和原始分支,並創建了一個「newbranch」。我在我的本地'newbranch'上完成了自己的開發工作,將它推到了Github的fork上,並創建了一個pull請求回到上游的repo。然後我在Github上直接在叉子上做了一些修改。後來,我在沒有從Github更新的情況下對本地副本進行了更改。我已經通過Github fork中的'newbranch'合併解決了這個問題。

到目前爲止,這麼好。但是,我現在一直試圖從上游回購更新我的分支並遇到麻煩。

提交更改我的「newbranch」和他們推到叉後,我做了以下內容:

git fetch upstream 
git checkout master 
git merge upstream/master 

這導致數以千計的衝突。我做了一個重置​​來退出合併,但仍然留下了成千上萬的修改文件在分支,我無法弄清楚如何清理它們。

我從上游回購的'devel'分支創建'newbranch'。如果你想知道爲什麼我搞亂了'master'分支,那就讓我們兩個人。

我的Github fork說我的'devel'分支在上游回購後面有4萬個提交。我想清理本地回購,從上游回購更新本地'devel'和'newbranch'分支,並將這些更改同步到我的Github分支。

任何幫助擺脫這個混亂非常感激。

回答

0

看來我所做的就是按照Github的指示,望文生義沒有一個明確的認識不夠想。可能是因爲創建「新生產線」和重新定義這個問題之間有相當長的一段時間。

'newbranch'是由devel創建的,而不是master。所以當我試圖合併'上游/主'和'新分支'時,就有成千上萬的衝突。我大概只能修理我的回購用一個簡單的命令git reset --hard但是這是我做什麼,而不是:

git clone https://github.com/MYACCOUNT/REPO.git 
git remote add upstream https://github.com/UPSTREAM/REPO.git 
git fetch upstream 
git checkout devel 
git pull upstream devel 
git push 
git checkout vhosts-package 
git rebase devel 
git push 

我的變化已經承諾這樣有沒有別的事情可做。就像我說的那樣,硬重置可能會清除它,但這很有效,我很高興。

希望這對某人有所幫助。

0

如果你想出來的這個爛攤子的有幾個簡單的方法

1)創建一個從上游的一個新的分支,並刪除之前的分支,並重新命名當前分支,然後強制推到你的叉子。

2)git reset --hard HEAD~<some x number of commits>,然後快速向前git pull當前分支,然後cherry-pick提交您從歷史訪問引用日誌

+0

這真的是唯一的方法嗎?分叉的存儲庫沒有被損壞,並且我向上游的repo提交了一個pull請求。但是,似乎我本地回購中的'主'分支已經損壞。我會非常高興地傾銷我的本地回購,並從Github重新加載它,因爲它應該包括我的'newbranch'。這會工作嗎?然後從上游更新本地回購並將這些更新推送到Github分叉的步驟是什麼? – sthames42

+0

它可能不是唯一的方式,但當你完全搞砸時,我覺得它很簡單。 – Peddipaga

+0

感謝您的回覆。我認爲我很難理解你的解決方案,但是我認爲如果我有這個方案會更容易。完成重建我的本地回購。現在都好。 – sthames42

相關問題