2012-04-24 78 views
12

下面是這個場景:我從Github中分離出某些存儲庫並將其克隆到本地目錄。我做了一個改變,提交併將其推送到我的分叉庫。然後,我向原始存儲庫發送拉取請求,但因任何原因而被拒絕。原始存儲庫然後從其他人提交一些提交,使我的分支版本過期。現在,我如何獲得最新版本的原始回購(在我的分叉回購和本地)?另外,如何從Github上刪除我的提交歷史記錄,以便拒絕我的提交?如何在不刪除和重新分叉的情況下重新獲取分叉的Git回購?

+0

[放棄的Git可能重複Github上提交對拒絕拉請求](http://stackoverflow.com/questions/9538320/abandoning-git-commits-on-github-for-rejected-pull-requests) – CharlesB 2012-04-24 22:59:13

回答

8

永遠不要在主分支中進行自己的更改,您應該創建一個新的分支來執行您的更改並推送它。不管怎麼說,如果你想使你的分支等於遠程一個做:

假設你有上游作爲遠程git fetch upstreamgit checkout -f -B master upstream/master

結賬命令,如果分支主在那裏繼續前進,並與上游覆蓋它上面會/掌握如果它不在上游/主人創建它。

,如果你沒有上游添加爲遠程使用git remote add upstream repositoryurl

編輯:它應該是-B

編輯:git reset --hard upstream/master是比較合適的實際

4

保持GitHub上的分叉存儲庫同步是一個兩步過程。

  1. 保持你的本地回購與同步:

    混帳上游獲取; 混帳合併上游/大師

  2. 讓您在GitHub上叉同步與您當地的回購

    混帳推起源主

GitHub Fork A Repo了一些解釋。您需要將「上游」設置爲您分叉的存儲庫的遠程位置。

對於您的「拒絕提交」,如果您在本地分支上執行了這些提交,那麼您可以刪除該分支。如果它不在本地分支上,那麼您需要將分支的HEAD重置回您選擇的提交。如:

# Assume you are on master and need to go back to commit BeadBabe 
git checkout -b temp 
git branch -f master BeadBabe 
git checkout master 
git branch -d temp 

已經過去。

+1

我發現這比接受的答案稍微清晰。感謝您的解釋! – Tim 2014-03-05 21:27:07

相關問題