2012-01-17 33 views
21

我在我的iOS Xcode項目中使用了NSDate-Extensions插件。主回購有一定的誤差,這似乎是固定在兩個下拉請求:GitHub:如何將打開的拉取請求添加到本地回購?

這些請求仍然是開放的,而不是接受主回購。我怎樣才能以Git方式將這些添加到我的本地回購?這將是很好,如果我的本地回購得到更新,如果他們的叉被後來進行了更新:

+0

[將其他叉子的請求拉入我的叉子](http://stackoverflow.com/questions/6022302/pull-requests-from-other-forks-into-my-fork) – CharlesB 2013-02-25 13:35:41

+0

可能的重複[ git:我如何獲取一個沒有合併的pull請求,我不擁有一個分支?](http://stackoverflow.com/questions/6743514/git-how-can-i-fetch-an-unmerged-pull-request -for-a-branch-i-dont-own) – 2014-06-02 14:35:06

回答

16

添加.patch到拉網址的結尾 - 你可以下載並應用補丁上的回購:

curl https://github.com/erica/NSDate-Extensions/pull/6.patch | git am 
+0

什麼是'git am'在做什麼? – dhrm 2012-01-17 08:13:13

+0

'git am'應用'curl'命令傳遞的補丁文件。 – 2012-01-17 08:18:27

+0

完成上述命令後,修補程序成功應用,但是當我運行'git status'時,它說沒有任何更改。爲什麼這個補丁會改變我的本地回購,並且仍然說沒有任何改變? – dhrm 2012-01-17 14:15:31

12

你應該補充一點,所提供的引入請求叉,並將其添加爲遠程:

  • 查找有助於該鏈接的人(通常只需單擊SHA1哈希)

  • 做這樣的事情:

    git remote add githubuser theirgithubfork.git

然後你就可以很容易地拉下自己的變化:

  • git fetch githubuser

輕鬆拍攝個人提交與」

  • git cherry-pick thesha1fromthepullrequest

對於一個完整的例子,試想this pull request (6bbbcc5) from RogerE on the Ruby Capistrano project

$ git clone [email protected]:capistrano/capistrano.git 
$ cd capistrano 
$ git remote add RogerE https://github.com/RogerE/capistrano.git 
$ git fetch RogerE 
$ git cherry-pick 6bbbcc5
+0

因此,我應該克隆erica的原始回購,併爲Ricardo1980的兩個叉子運行「git remote add」並提升?如果我之後做了一個「混帳」,它會從最初的回購中拉出來嗎?或者兩個遙控器的更新也會被取消? – dhrm 2012-01-17 08:11:30

+0

爲什麼你們倆都會選擇一個櫻桃選擇?抓取不會從遠端拉下來嗎? – dhrm 2012-01-17 08:15:54

+0

'git pull'會從原始回購中拉出。您可以通過指定遠程名稱和refspec來指定從哪個回購站點獲取。例如'git拉RogerE主'。 – 2012-01-17 08:22:52

-2

您可以從中選擇特定的引入請求是這樣的:

git pull https://github.com/erica/NSDate-Extensions/pull/6 
git pull https://github.com/erica/NSDate-Extensions/pull/7 

IMO這是不是增加容易得多遠程(特別是當它只是一次性修復)通過捲曲或管道。

+0

這個想法是正確的,但它不能像那樣工作,這可能是downvote的原因。我在http://stackoverflow.com/a/18096344/1904815上添加了一個可用的解決方案, – JonnyJD 2013-08-07 07:03:13

14

你可以拉在命令行的請求,而不增加遙控器:

git pull https://github.com/erica/NSDate-Extensions +refs/pull/6/head 

如果您還不確定要做到這一點,那麼你可能要與第一簽出分支:

git fetch https://github.com/erica/NSDate-Extensions +refs/pull/6/head:refs/origin/pull/6 

與使用補丁文件相比,這個優點是git獲得了實際的提交。所以git可以看到master以前是否合併到pull請求中。補丁文件完全不知道這種差異。

相關問題