同僚のリポジトリに私がアクセスできるスタッシュ (ファイルシステム経由) があり、そのスタッシュを自分のリポジトリのブランチにプルしたいと考えています。
% 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 を取得することはできません。