来自远程存储库的Cherrypick单一版本?

时间:2012-04-23 03:09:09

标签: git github git-cherry-pick

假设有项目存储库(在GitHub上)和我的fork(也在GitHub上)。我的fork是相同的,除了包含一个单个文件的修订(一个bug修复),它尚未被项目存储库接受。我正在尝试向第三方提供有关如何下载最新版软件的安装说明,包括我的错误修复。

据我所知,他们必须这样做:

git clone http://projectrepo
git remote add myrepo http://myrepo
git fetch myrepo
git cherry-pick a12345
git remote rm myrepo

(假设我不打算保持myrepo最新 - 我希望我的指示能够超过我对项目的参与,这可能会很快结束。还假设可能会对此文件进行其他更改,因此只需下载一个整个文件的副本不安全。)

有几个次优的原因:

  1. 他们需要转移两个完整的Git回购
  2. 这是另外三个命令,只是为了获得一个文件。
  3. 有更好的解决方案吗?您能以更简单的方式获得单一修订吗?

3 个答案:

答案 0 :(得分:4)

只是创建一个补丁文件并告诉他们应用它有什么问题吗?您甚至可以将其保存为主旨,以避免向其发送电子邮件。

创建补丁:

git format-patch -1 a12345

应用它:

git clone http://projectrepo
cd projectrepo
wget https://raw.github.com/gist/<patch-file>
git am -3 <patch-file>

答案 1 :(得分:2)

略过remote add / remote rm

git clone http://projectrepo
git fetch http://myrepo remote-branch-name
git cherry-pick a12345

如果您知道提交是remote-branch-name的HEAD,那么您可以改为git cherry-pick FETCH_HEAD

答案 2 :(得分:0)

AFAICT没有必要手动告诉git获取两个repos。你可以去

git clone http://myrepo
cd myrepo; git co <rev/branch> # maybe

git / github会处理所有细节。