リモートリポジトリからローカルブランチにスタッシュを取得できますか? 質問する

リモートリポジトリからローカルブランチにスタッシュを取得できますか? 質問する

同僚のリポジトリに私がアクセスできるスタッシュ (ファイルシステム経由) があり、そのスタッシュを自分のリポジトリのブランチにプルしたいと考えています。

% git ls-remote ~alice/work/repo/ stash
3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 参照/スタッシュ

しかし、それを取得しようとすると、git は「3cc82 が見つかりません...」と表示します。

% git フェッチ ~alice/work/repo stash:new_branch
リモート: 合計 0 (デルタ 0)、再利用 0 (デルタ 0)
エラー: 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 が見つかりません
致命的: オブジェクト 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 が見つかりません

リモートスタッシュを取得する方法はありますか?

ベストアンサー1

はい、部分的には可能です。隠し場所もう一つの参照ヘッド(ブランチ)ではない参照を取得するには、参照スペック完全な参照パスを使用します。

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

しかし、"Invalid 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 を取得することはできません。

おすすめ記事