簡體   English   中英

使用Github存儲庫(合並,重置)而不進行克隆

[英]Working with Github repositories (merge, reset) without cloning

想象一下,我已經分叉了一個Github存儲庫,在做了很多更改之后,發現不可能自動合並我的pull請求。

但我不想將母存儲庫克隆到我的本地驅動器以reset --hardmerge -f

我在這里的主要問題是遙控器 - 我似乎無法找到一種方法來添加像Github API這樣的東西的遠程引用,因此我無法將我的遠程存儲庫合並到我最初分叉的父存儲庫中。

告訴我,如果我不清楚,我很樂意編輯我的問題。

我不完全確定你在這里問的是什么。 首先,您不合並存儲庫,合並分支。 存儲庫只保存分支和與它們相關的提交。 其次,為了將遠程添加到本地存儲庫,您不需要與GitHub API進行交互。 我建議不要在您的遠程存儲庫中添加遠程數據庫,因為它不會自動保持最新狀態。

我通常做的是在我的本地存儲庫中添加一個新的upstream遠程:

git remote add upstream <url-to-parent>

獲取更新的引用:

git fetch upstream

現在,您可以訪問父存儲庫中的最新數據。 好的部分是存儲庫中的大多數對象都將被重用,因此您不會擁有完全獨立的副本。 現在,您可以通過upstream遠程訪問父回購中的內容。 例如,您可以在父存儲庫中合並最新版本的master:

git merge upstream/master

您還可以在更新的主服務器上重新設置當前的更改集(請注意這一點! ):

git rebase upstream/master

當它是私人分支時,我傾向於選擇后者。 如果有人在我的分支上建立,有時前者是必要的。 如果你沒有處理rebase,你可能不希望這是你第一次使用它。 您需要在壓力較小且受控制的環境中進行實驗。

無論你決定做什么,都要學會處理合並沖突。 大多數都很容易理清,從長遠來看,它將使Git(或任何其他VCS)更好。

更新

在評論中進行了一些討論之后,現在很清楚你想要將你的工作合並到上游。 是的,這完全有可能。 實際上,如果您已將upstream/master合並到主分支中,那么您真正需要做的就是:

git push upstream master

這會將您的主分支推送到主分支項目的遠程存儲庫。 它應該是一個快速前進的,沒有理由使用--force 如果您確實看到一些關於無法快進或使用--force ,請小心。 丟失數據的可能性很大。

在這種模式下,我更喜歡使用git rebase upstream/master后跟git push upstream master以避免在日志消息中看到"Merging upstream/master into master" 正如我之前提到的, git rebase確實也有它自己的關注點。

在此模式下,master是您和上游之間發生所有合並和解決的地方。 您不能直接合並到遠程ref,因為沒有與之關聯的分支(本地)。 git merge需要一個工作樹來工作,以防萬一有合並沖突。 但是在你的場景中你真的不需要它。 合並上游主分支后,您可以毫無問題地推送分支。

暫無
暫無

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

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