簡體   English   中英

如何使用git合並來自不同存儲庫的拉取請求(或提交)?

[英]How to merge a pull request (or commit) from a different repository, using git?

我已經將GitHub存儲庫A淺表克隆(分支)到我自己的存儲庫B中 因此,沒有針對B的提交歷史記錄。但是,我要添加到B中的倉庫A中有一個未合並的(打開的) 拉取請求 X ,我想將其添加到B中,並且仍然將其顯示為適當的合並拉取請求,但是沒有添加額外的分支和添加的提交歷史記錄。 (X基於分支 Z上存儲庫C中的特定提交 Y。

您如何使用CLI中的git做到這一點?


考慮到合並請求請求 (來自A)和選擇提交 (來自C)的看似等效,我想應該有幾種不同的方法來完成相同的任務。

我已經看過許多類似的問題,但是它們並不能完全解決問題,因為它們通常涉及首先以各種方式獲取所有提交,或者是不完整的。 我看過:

這就是我做到的。

  1. 從本地倉庫中提取所有必需的更改:
    git pull

  2. 更改原始 URL:
    git remote set-url origin https://url.com

  3. 將要推送代碼的分支切換到:
    git checkout BRANCHgit checkout -b BRANCH
    (我總是對此感到困惑)。

  4. (可選)設置上游:
    git branch --set-upstream-to=origin/BRANCH

  5. 藏:
    git stash

  6. 提交更改:
    git commit -m "feat: moving branch"

  7. 最后將其全部推送:
    git push

希望這可以幫助。 如果您發現任何問題,請告訴我。

櫻桃采摘

實際上,我要的是所謂的“ cherry picking 但是,由於我自己的淺存儲BC原始提交Y提交歷史不同,所以可能不可能(?)使它看起來“適當的合並請求” ,至少在某種意義上顯示了GitHubs Network圖。
(如果有人對此有其他解決方案,請發表評論。)

該過程已被詳細記錄,在這種情況下,最簡單的解決方案是:

git fetch git@github.com:<USERNAME>/<REPO-C> <BRANCH-Z> --no-tags
git cherry-pick <commit-Y>
git push origin master

到目前為止,這是最簡單的方法,因為它不需要添加/更改獲取源。

使用<id>拉取特定PR

您也可以直接使用PR的ID直接拉出PR:

git pull https://github.com/{upstream/project} refs/pull/{id}/head

有關其他選項,請參見:

暫無
暫無

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

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