6

コミットされていないコードの隠し場所を保存しただけでオフィスを離れることが何度かありました。

そのため、同じ機能の作業を続けたい場合は、ホストに SSH で接続し、使い捨てブランチを作成し、スタッシュをコミットして、新しいブランチを開発リポジトリにプッシュする必要がありました。

ここで、git stash を別のローカル リポジトリに「コピー/エクスポート」するための、よりクリーンで実用的なソリューションがあるかどうか疑問に思います。ラップトップでも進行中の作業がある可能性があるため、オフィス マシンのローカル リポジトリを SCP 化することは既に除外しています。

PS: 私の質問は、この質問の続きのようです

4

4 に答える 4

1

stash は特別なタイプのコミットとして保存されるため git オブジェクト データベースで使用できます。ただし、そのコミットへの参照は、通常フェッチに使用できる名前空間の外にあります。

ソース リポジトリで次のコマンドを実行すると、最新の stash を取得できるようになります。

git symbolic-ref refs/heads/exported-stash refs/stash

exported-stashこれにより、他のブランチと同様にフェッチできるという名前のブランチが作成されます。必要に応じて別の名前を使用できますがstash、名前が実際の隠し場所とあいまいであるという迷惑な警告が表示されるため、使用しないでください。リモートからフェッチした後、次の方法で別のリポジトリに適用できます。

git stash apply origin/exported-stash

(リモートからフェッチされたと仮定しますorigin)。

変更を行った後、それらをローカルに隠して、更新された隠し場所をオリジンにプッシュすることもできます:

git push origin +stash:exported-stash

+これを強制プッシュに変えますが、この場合は実際には安全です。stash@{1}スタッシュのリストは参照のログとして保存されるため、元のスタッシュの古いバージョンが移動されます。

于 2013-07-23T14:32:13.897 に答える