Search code examples
gitgit-stash

Can I fetch a stash from a remote repo into a local branch?


A colleague has a stash in their repository which I can access (via the filesystem), and I'd like to pull that stash into a branch in my repository.

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

But when I try to fetch that, git tells me "unable to find 3cc82..."

% git fetch ~alice/work/repo stash:new_branch
remote: Total 0 (delta 0), reused 0 (delta 0)
error: unable to find 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0
fatal: object 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 not found

Is there a way I can fetch the remote stash?


Solution

  • Update: A direct answer to the original poster's question is:

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

    'tempbranch' will be at the latest stash (stash@{0}) from the remote. Unfortunately I don't think the reflog is fetched from remote branches, so there is no way to get at the other stashes, unless you have access to the source repo.

    Scripting it: I posted a more comprehensive 'scripted' solution over at the mentioned question

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

    Also, as I discovered in the meantime, git-send-pack can be instrumental if you have access to the source repo:

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