2013-04-04 79 views
0

似乎相當容易我以爲,如何在Github的分支上進行提交和拉取請求?

  • 我分叉了一個名爲abc回購和克隆的本地。
  • 原來的回購我從分叉有一個名爲2.1-stable
  • 分支我沒有這個分支上我的回購或本地
  • 我需要提交這個分支,做PR原來的回購我從

分叉這是我曾嘗試:

// clone into a separate folder 
git clone git:github.com/some/abc.git -b 2.1-stable ../ext 
// set to my repo 
git remote set-url origin git://github.com/me/abc.git 

當我現在的地方添加空格編輯文件,並嘗試提交,有人告訴我:

local branch is ahead of remote by 1 commit 

我試圖抓取/拉,但這會產生大量的合併衝突(因爲我只是「間隔」,最可惜不是由於我的做法),但無論如何......我卡住了。

第二次嘗試加我的回購內部的分支:

git branch -a 

這表明,我一直在尋找的分支是remotes/upstream/2.1-stable。我想補充一點:

git checkout -b 2.1-stable remotes/upstream/2.1-stable 

但這種感覺已經不對,甚至試圖去提交類似

git push -u https://github.com/me/abc/2.1-stable.git 2.1-stable:2.1-stable 

無法驗證。

我可能做的100件事錯在上面......

問題
誰能告訴我如何正確地做到這一點?

謝謝!

回答

4

remote set-url更改存儲庫的URL,這實際上並不是您想要的,因爲這兩個存儲庫都將參與設置。

git中的分支與存儲庫克隆URL不相關,這就是爲什麼您最後一次嘗試未能通過身份驗證。


git的神奇之處在於您可以在存儲庫中配置多個遙控器。因此,您可以使用git clone https://github/me/abc結賬自己,然後您可以使用git remote add upstream https://github/some/abcupstream(類似於origin)是此特定角色的常規名稱)添加另一個遠程。如果您現在運行git remote,則會看到兩個推/拉url對,而不是一個。

您還沒有從upstream獲得任何數據,但要做到這一點運行git fetch upstream。現在數據已存儲在本地存儲庫中,您可以通過檢查本地分支git checkout -b 2.1-stable remotes/upstream/2.1-stable(這是來自您的帖子,您離得很近)來處理它。由於您沒有對upstream的提交訪問權限,相反,在完成編輯/提交後,您可以將新本地分支推送到與git push origin 2.1-stable。現在更改後的代碼位於github上,並且您已準備好通過github表單向該特定分支發送一個請求到upstream repo。

PS:請注意,您可以任意指定您的本地分支和遠程分支origin。這很有用,可以清楚地表明這不是從upstream確切的2.1-stable分支,但可能是some-new-feature分支有很多提交,它們恰好基於2.1-stable。分支的工作方式總是可以在提交歷史記錄中進行檢查,但命名可以讓其他瀏覽您的倉庫的人更容易找出哪些代碼是倉庫中不同分支的一部分。

+0

謝謝!這應該讓我走! – frequent 2013-04-04 08:31:31

相關問題