2014-10-18 95 views
5

我想櫻桃選擇從github提交。git櫻桃挑選遠程無分支承諾

https://github.com/angular/angular.js/commit/469b750019adb193f2b973ab841ac87d0d06d4f2

據我所知,它不是任何活躍的分支的一部分。我在本地回購嘗試這樣:

git remote add upstream https://github.com/angular/angular.js.git 
git fetch upstream 
git cherry-pick 469b750 

我得到這個錯誤

fatal: bad revision '469b750' 

正是我試圖做可能嗎?我搜索了丟失,孤兒和無分支提交,但我沒有找到任何有用的信息。我可以複製/粘貼並完成它,但我試圖保留歷史並瞭解更多關於git的信息。謝謝。

+0

甚至沒有辦法從遠程獲取通過引用無法訪問的提交(這是挑選的先決條件) – 2014-10-18 22:51:34

+0

最有可能的是,在強制推送後,有問題的提交變得無法訪問(請注意其父母'80ea36256f8ffc6ad59ea5964c919c36327a909d'仍然可以訪問),但[不知何故仍然顯示在Github上](https://help.github.com/articles/commit-exists-on-github-but-not-in-my - 本地克隆/#的分支 - 即包含的最提交 - 被刪除的)。 – Jubobs 2014-10-18 23:14:08

回答

5

它不會完全櫻桃挑,但是你可以把這個承諾如下:

  1. 添加.patch到Github的網址,並將其保存爲git的補丁文件:

    wget https://github.com/angular/angular.js/commit/469b750019adb193f2b973ab841ac87d0d06d4f2.patch -o new.patch 
    
  2. 將此提交應用於您的樹git am

    git am new.patch 
    

這樣的結果應該與櫻桃採摘相同。

+0

結合研究和自助信息到你的答案,如果你不介意。 – BookOfGreg 2014-10-19 10:42:14

+1

@BookOfGreg:衆所周知,您可以通過向url添加.patch來從Github獲得git格式的修補程序。另外我經常使用'git format-patch -1' /'git am' combo而不是櫻桃採摘 - 我發現它更方便。這就是爲什麼我提出這個解決方案。 – mvp 2014-10-19 18:31:53

1

這是一個非常有趣的問題。我自己在本地測試它,並且提交沒有出現在reflog --all中,因此它不僅是孤立的,而且也不是從Github上下載,克隆或獲取。 這可能是一種情況,除非您手動下載並將其放回樹中,否則它會永遠丟失。

https://help.github.com/articles/commit-exists-on-github-but-not-in-my-local-clone/

+0

感謝您的確認。我在我的研究中看到了github文章,它很穩固。沒有任何櫻桃採摘信息表明這是不可能的。我想看看是否stackoverflow同意。 – 2014-10-18 23:10:28

+2

mvp的解決方案手動下載並將其放回樹中,以便我的背景正確,但他的實際機制是解決方案。 :) – BookOfGreg 2014-10-19 10:37:22

0

我正在尋找一個同事今天做的特定提交,然後去我的命令行櫻桃選擇提交(和一系列其他提交)到另一個實驗git分支。我注意到我去這個「致命的:錯誤修正」#######'「錯誤。 因爲即使它是在bitbucket中,它不在我的本地git repo中......我做了一個'git pull'來獲得這些提交,然後櫻桃選擇工作。 這可能是解決這個錯誤的大多數問題我猜測。