73

frontendこれは、過去2週間のブランチのパイプラインです。

| Stash@{3}以来、すべてのコードですStash@{1}(2つの小さなコミットを除く)
| 小さなコミット
| 小さなコミット
| 2週間前の大規模な一括コミット、現在はリベースされ、Stash@{1}

私の作業ツリーは現在きれいです。
Stash@{1}2週間前の一般的な開発コードの一括コミットの内容です(これはそもそも隠されているはずです)。このコミットは取り消され、stashに移動されました。
Stash@{3}以来、そのツリーの最新の作業ですStash@{1}(コミットされたいくつかの変更を除く)。

この膨大な作業プールから多数のコミットを実行できるように、作業ツリーでこれら2つの隠し場所を組み合わせる必要があります。

私は走っgit stash apply stash@{1}てから試しました:

git stash apply stash@{3}
git stash show -p | git stash apply stash@{3}

しかし、どちらの場合も「ダーティワーキングツリー」が表示されます。この作業をどのようにマージできますか?は新しいので、競合があるところならどこでもstash@{3}それを置き換えてほしいです。stash@{1}

4

5 に答える 5

130

少し複雑ですが、これはほとんどの場合機能します。

  1. 最初の隠し場所をポップします

    $ git stash pop
    
  2. 最初の隠し場所からの変更を一時的にコミットします

    $ git add . && git commit -am 'WIP'
    
  3. 2番目の隠し場所をポップします

    $ git stash pop
    
  4. 一時的なコミットを元に戻し、導入した変更を保持します

    $ git reset --soft HEAD^
    
于 2013-01-24T16:53:10.283 に答える
53

作業ツリー内の変更されたファイルとの競合がない場合にのみスタッシュを適用できるため、最初に、変更されたファイルがないことを確認しgit status、ある場合はそれらをコミットします。次に、次のことを行います。

git stash apply stash@{1}
git commit -a
# Enter your commit message
git stash apply stash@{3}

次に、新しいコミットを作成するか、前のコミットを修正してそれらを組み合わせることができます。適用するたびに、マージの競合を解決する必要がある場合があります。

また、git stash popではなくを使用することにした場合は、最初のものがポップオフされてからになることapplyに注意してください。stash@{3}stash@{2}

于 2012-02-04T19:41:19.320 に答える
14

より良い方法は、単に使用git stash show -p stash@{whatever} > stash-{whatever}.diffしてから、それぞれに使用することgit applyです。

于 2012-03-11T20:40:45.930 に答える
6

これは私のために働いた。

  1. 現在の変更をステージングします(ステージングされていない場合は、この手順をスキップします)

    git add .
    
  2. あなたが望む隠し場所を適用する

    git stash apply stash@{0}
    
  3. 現在の変更をステージングする

    git add .
    

    またgit add <stashed_filename>

  4. 手順2と3を複数回続行します

  5. その後、すべてのステージを解除します

    git reset 
    

終わり!

于 2021-02-17T08:49:47.817 に答える
2

私も同様の問題を抱えていて、このように解決しました。

git stash popスタッシュの1つを適用するために使用します。次に、この隠し場所のパッチを。で作成しgit diff -p > ../stash.diffます。次に、作業ツリーをリセットして(または変更を再度スタッシュして)、もう一方のスタッシュを。でポップしgit stash pop stash@{1}ます。この時点でパッチを適用すると、2つの異なるスタッシュを「マージ」できます。

おそらく、解決すべきいくつかの競合があります。すべてがうまくいけば、隠された変更を削除できます。

于 2012-03-11T20:38:25.500 に答える