![](/img/trans.png)
[英]Git: How to pull from another repository without adding a merge commit
[英]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)的看似等效,我想應該有幾種不同的方法來完成相同的任務。
我已經看過許多類似的問題,但是它們並不能完全解決問題,因為它們通常涉及首先以各種方式獲取所有提交,或者是不完整的。 我看過:
這就是我做到的。
從本地倉庫中提取所有必需的更改:
git pull
。
更改原始 URL:
git remote set-url origin https://url.com
。
將要推送代碼的分支切換到:
git checkout BRANCH
或git checkout -b BRANCH
(我總是對此感到困惑)。
(可選)設置上游:
git branch --set-upstream-to=origin/BRANCH
藏:
git stash
提交更改:
git commit -m "feat: moving branch"
最后將其全部推送:
git push
希望這可以幫助。 如果您發現任何問題,請告訴我。
實際上,我要的是所謂的“ cherry picking
。 但是,由於我自己的淺存儲庫B
和C
原始提交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.