【问题标题】:Can I fetch a stash from a remote repo into a local branch?我可以从远程仓库获取存储到本地分支吗?
【发布时间】:2011-01-15 23:04:36
【问题描述】:

一位同事在他们的存储库中有一个我可以访问的存储库(通过文件系统),我想将该存储库拉到我存储库中的一个分支中。

% git ls-remote ~alice/work/repo/stash 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 refs/stash

但是当我尝试获取它时,git 告诉我“无法找到 3cc82...”

% git fetch ~alice/work/repo stash:new_branch 远程:总计 0(增量 0),重用 0(增量 0) 错误:找不到 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 致命:找不到对象 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0

有没有办法获取远程存储?

【问题讨论】:

    标签: git git-stash


    【解决方案1】:

    是的,部分可以。 stash 只是另一个 ref。您可以通过指定带有完整引用路径的refspec 来获取不是头(分支)的引用。

    git fetch some-remote +refs/stash:refs/remotes/some-remote/stash
    git stash apply some-remote/stash
    

    您也可以将其配置为在运行普通提取时提取存储:

    git config --add remote.some-remote.fetch +refs/stash:refs/remotes/some-remote/stash
    git fetch some-remote
    git stash apply some-remote/stash
    

    但是,如果没有带有“无效 refspec”的存储,这将失败,因为 ref 不存在,因此您最好按需进行。您可以设置一个别名,例如:

    cat > /usr/local/bin/git-fetch-stash
    git fetch --verbose "$1" +refs/stash:refs/remotes/"$1"/stash 
    ^D
    chmod +x /usr/local/bin/git-fetch-stash
    
    git fetch-stash some-remote
    

    需要注意的是,您无法获取多个存储。这些作为条目存储在 reflog 中,您无法获取远程的 reflog。

    【讨论】:

      【解决方案2】:

      更新:对原发帖者问题的直接回答是:

      git send-pack ./ 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0:refs/heads/tempbranch
      

      'tempbranch' 将位于远程的最新 stash (stash@{0})。不幸的是,我不认为 reflog 是从远程分支获取的,因此除非您有权访问源代码库,否则无法获取其他存储区。

      编写脚本:我在提到的问题上发布了一个更全面的“脚本化”解决方案

      Is it possible to push a git stash to a remote repository?

      此外,正如我在此期间发现的那样,如果您可以访问源代码库,那么 git-send-pack 可以发挥作用:

      git send-pack ../myworkingfolder/ stash@{0}:refs/heads/collegue_stash
      

      【讨论】:

      • 谢谢,我看到了(并赞成)。然而,这个问题试图解决一个不同的问题;我可以看到远程仓库,但我的同事已经隐藏而不是提交,然后回家告诉我关于存储的事情,所以我只想抓住那个存储。出现了一些冗长的解决方案(例如,制作一个补丁并在本地应用它),但我正在寻找一种直接的方法来将存储区提取到我的存储库中。
      • 编辑了更多见解的评论
      【解决方案3】:

      您不能,但这为您提供了一条替代路径。 is-it-possible-to-push-a-git-stash-to-a-remote-repository

      【讨论】:

      • 嗨 naven87。我确实看到了其他 SO 问题,但它不适合我的需要。感谢您的回答,如果没有其他人发布更直接的解决方案,我会在一段时间后接受。
      猜你喜欢
      • 2012-01-05
      • 1970-01-01
      • 2021-04-07
      • 2019-10-27
      • 2021-11-02
      • 2013-05-25
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      相关资源
      最近更新 更多