78

現在の作業コピーをスタッシュと比較するにはどうすればよいですか?

私の使用例: 私の作業コピーには既に my の変更のサブセットが含まれていますが、 のすべての変更stash@{0}を適用したくありません。どの望ましい変更が作業コピーにまだ欠けているかを判断するために diff を実行したいと考えています。stash@{0}stash@{0}

4

10 に答える 10

22

作業ツリーが汚れている場合は、最初に汚れた作業ツリーをコミットしてから、それを隠し場所と比較することで、それを隠し場所と比較できます。その後、(履歴をクリーンに保つために)作業ツリーのコミットを元に戻すことができます。

  • ダーティな作業ツリーをコミットします。

    git add .
    git commit -m "Dirty commit"
    
  • そのコミットで隠し場所を比較します。

    git diff stash@{0}
    
  • その後、コミットを元に戻して、作業ディレクトリに戻すことができます。

    git reset --soft HEAD~1
    git reset .
    

これで、汚れた作業ツリーを隠し場所と比較し、元の場所に戻りました。

于 2013-01-21T13:34:45.967 に答える
17

作業コピーをコミットまたはスタッシュしないと、これを行うことはできません。スタッシングはおそらくリスクが低いです。

git add -A                    # Stage all changes in your working copy.
git stash save --keep-index   # Stash your working copy and leave it intact
git diff stash@{0} stash@{1}

差分をとるために作成したスタッシュを取り除くには、git stash popまたはを使用しますgit stash drop stash@{0}

代わりにコミットを使用する場合は、@Magne の回答を参照してください。

于 2016-07-26T20:56:54.713 に答える
2

次のように、Unix diffコマンドを 2 つの Git コマンドと組み合わせて使用​​できます。

diff <(git diff) <(git stash show -p stash@{0})

もちろん、stash@{0} を任意の stash に変更できます。このコマンドは実際には、実際の作業ディレクトリ (git diff) をスタッシュの 1 つと比較しています。

アップデート

また、 colordiffをインストールすると、はるかに優れた結果が得られます。

インストール:

  • Ubuntu/Debian: sudo apt-get install colordiff
  • OS X: brew install colordiff

次に、コマンドを次のように変更します。

colordiff <(git diff) <(git stash show -p stash@{0})
于 2016-12-06T19:07:58.830 に答える
-1

はい、使用できます。詳細については、スタッシュに対するgit stash show -pこの Git diff を確認してください。

于 2017-02-06T09:38:59.760 に答える