15

化石/bzrを使用するときに「git stash」の動作をエミュレートすることは可能ですか?

基本的に、次のワークフローの処理に興味があります。

  • ある時点で、ソース コード ツリーの状態が X になり、コミットされます。
  • 新しいコードの作成に進み、しばらく書いて、リファクタリングの機会を見つけます
  • この時点ではコミットできません。開始した変更が完了していないためです。まだアトミックではありません。
  • この時点で、「git stash」を実行し、現在の作業を保存して、状態 X に戻ります。
  • リファクタリングとコミットを行い、ソース コードの状態は Y になりました
  • ステート Y のソース コードをスタッシュ内のコードとマージし、変更を完了してアトミックに変更し、もう一度コミットして、ソース コードをステート Z にプッシュします。

「git stash」を実行する代わりに状態 X でコードを分岐し、その分岐でリファクタリングを実行してから、分岐をメインの分岐にマージすることで、別の SCM を使用するときにこのシナリオをエミュレートすることは一般的に可能だと思います。しかし、分岐が必ずしも安価な操作ではないことは承知しています。最終的に化石/bzrの特定の機能に依存するより良い特定のアプローチはありますか?

4

3 に答える 3

28

使用bzr shelvebzr unshelveコマンド。

于 2009-12-16T10:54:57.900 に答える
12

patchシステムのコマンドを使用できます。

  • 最初に、生成された diff を .patch ファイルとして保存することで「スタッシュ」を作成します。

    $scmtool diff > working.patch

  • 次に、作業ディレクトリをリセットします。

  • 後で、次の方法でパッチを適用します。

    patch -p1 --dry-run < working.patch

  • そしてこれが機能したら、を削除し--dry-runてパッチを実際に適用します。

于 2009-12-18T11:40:39.367 に答える
8

このstashコマンドは、最近化石に実装されました。stash利用可能なコマンド リストに表示される最新の化石実行可能ファイルをチェックアウトする必要があります。

構文に関する Web ヘルプへのリンクは次のとおりです。

于 2011-11-25T12:01:28.160 に答える