Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Cherrypick从远程存储库中选择单个修订版?_Git_Github_Git Cherry Pick - Fatal编程技术网

Git Cherrypick从远程存储库中选择单个修订版?

Git Cherrypick从远程存储库中选择单个修订版?,git,github,git-cherry-pick,Git,Github,Git Cherry Pick,假设有项目存储库(在GitHub上)和my fork(也在GitHub上)。我的fork是相同的,除了包含单个文件的一个修订版(一个bug修复),该修订版尚未被项目存储库接受。我试图向第三方提供安装说明,说明如何下载软件的最新版本,包括我的错误修复 据我所知,他们必须这样做: git clone http://projectrepo git remote add myrepo http://myrepo git fetch myrepo git cherry-pick a12345 git re

假设有项目存储库(在GitHub上)和my 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保持最新状态-我希望我的指示能在我参与该项目之后继续有效,该项目可能很快结束。还假设此文件可能会发生其他更改,因此仅下载整个文件的副本是不安全的。)

这方面有几个次优:

  • 他们需要转让两整批吉特回购协议
  • 只需要三个额外的命令就可以得到一个文件

  • 有更好的解决方案吗?你能用一种更简单的方法获得一个版本吗?

    AFAICT没有必要手动告诉git获取两个回购协议。你可以走了

    git clone http://myrepo
    cd myrepo; git co <rev/branch> # maybe
    
    git克隆http://myrepo
    cd myrepo;吉特公司#也许吧
    

    git/github负责所有细节。

    AFAICT无需手动告诉git获取两份回购协议。你可以走了

    git clone http://myrepo
    cd myrepo; git co <rev/branch> # maybe
    
    git克隆http://myrepo
    cd myrepo;吉特公司#也许吧
    

    git/github负责所有细节。

    创建补丁文件并告诉他们应用补丁有什么问题吗?你甚至可以将它保存为要点,以避免通过电子邮件发送

    创建修补程序:

    git format-patch -1 a12345
    
    应用它:

    git clone http://projectrepo
    cd projectrepo
    wget https://raw.github.com/gist/<patch-file>
    git am -3 <patch-file>
    
    git克隆http://projectrepo
    cd projectrepo
    wgethttps://raw.github.com/gist/
    吉特am-3
    
    创建补丁文件并告诉他们应用补丁有什么问题吗?你甚至可以将它保存为要点,以避免通过电子邮件发送

    创建修补程序:

    git format-patch -1 a12345
    
    应用它:

    git clone http://projectrepo
    cd projectrepo
    wget https://raw.github.com/gist/<patch-file>
    git am -3 <patch-file>
    
    git克隆http://projectrepo
    cd projectrepo
    wgethttps://raw.github.com/gist/
    吉特am-3
    
    跳过
    远程添加
    /
    远程rm

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

    如果您知道提交是
    远程分支名称的头,那么您可以改为
    git cherry pick FETCH\u HEAD

    跳过
    远程添加
    /
    远程rm

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

    如果您知道提交是
    远程分支名称的头,那么您可以改为
    git cherry pick FETCH\u HEAD

    是的,但是这样他们就不会从主项目回购的未来改进中获益。是的,但是他们就不会从主项目回购的未来改进中获益。使用git协议, git://somerepo,速度快得多。git很少拉你已经拥有的对象,它不在乎对象来自哪里。为什么他们需要自己应用补丁呢?你能不能把它们指向你的回购协议,它已经包含了你的错误修复程序?@CharlesB:请看关于不维护myrepo的声明。@jthill:谢谢,我不知道。@SteveBennett:好的,一开始我不懂使用git协议,git://somerepo,速度快得多。git很少拉你已经拥有的对象,它不在乎对象来自哪里。为什么他们需要自己应用补丁呢?你能不能把它们指向你的回购协议,它已经包括了你的错误修复?@CharlesB:请看关于不维护myrepo的声明。@jthill:谢谢,我不知道。@SteveBennett:好的,一开始我不明白Reader,这是一个完美的解决方案。谢谢。呃,这是一个完美的解决方案。非常感谢。