簡體   English   中英

如果分叉存儲庫和原始存儲庫均已推送某些提交,如何使用原始存儲庫更新分叉存儲庫?

[英]How to update forked repo with original repo if both forked repo and original repo has some commits pushed?

我有以下情況:

有一個名為“ MASTER”的倉庫。 分叉“ MASTER”以創建“ FORK_MASTER”。

假設在“ MASTER”上推送了10次提交,在“ FORK_MASTER”上推送了大約2次提交。

現在我要更新FORK。 如何實現呢?

我嘗試這樣做。 我執行以下步驟來實現此目的:1)在上游將“ FORK_MASTER”設置為“ MASTER”。 2)git上游提取3)git上游/開發基礎4)git push原始

但是git在第3步后引發沖突,即git rebase上游/開發。

期待聽到如何實現這一目標。

由於MASTER是主要存儲庫(FORK_MASTER為MASTER存儲庫作出貢獻),因此您應該首先從MASTER存儲庫中提取更改,然后在頂部重新排列FORK_MASTER的更改。

假設本地repo開發分支的提交歷史如下:

…---A---B  develop

對於MASTER回購,有10個提交C1C10 對於FORK_MASTER回購,有2個提交D1D2被推送。

通常,工作流程是將更改推送到FORK_MASTER,然后創建合並請求,以將FORK_MASTER / develop合並到MASTER / develop(因為在FORK_MASTER倉庫中工作的人通常不是MASTER倉庫的管理員):

# In local FORK_MASTER repo
git remote add upstream https://github.com/user/MASTER -f
git checkout develop
git pull origin develop
git pull upstream develop --rebase
git push -f origin develop

提交歷史將為:

…---A---B---C1---C2---…---C10---D1---D2 develop, origin/develop
                           |
                     upstream/develop  

現在,FORK_MASTER存儲庫已更新。 您還可以通過創建合並FORK_MASTER / develop到MASTER / develop的拉取請求來更新MSTAER回購。 或者,如果您有權將更改推送到MASTER倉庫,則可以直接通過git push upstream master來推送到MASTER倉庫。

注意:當rebase在upstream/develop的頂部提交D1D2時,如果存在沖突,則可以手動修改和保存沖突文件,然后使用git add . git rebase --continue

我已經使用以下命令解決了這個問題:

git remote -v (檢查原始存儲庫位置)

git remote添加上游(添加上游回購路徑)

git fetch上游(從上游倉庫獲取分支)

git merge上游/ --allow-unrelated-histories -X我們的-m“更新分支” (將從上游分支到分支的更改合並)

git push -f origin --all (將更改推送到分支分支)

使用這些命令,我​​能夠成功更新分叉的分支。

暫無
暫無

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

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