1. ホーム
  2. git

[解決済み] Git stash uncached: すべてのステージングされていない変更を片付けるには?

2022-04-23 09:28:24

質問

gitでバージョン管理されているプロジェクトで、2つの変更が行われたとします。一方はステージングされ、もう一方はステージングされていません。

この状態(コミット前)でプロジェクトを実行し、ステージングされた変更を再確認したいのですが。 ステージングされていない変更をすべて片付け、ステージングされたものだけを残す簡単な方法は何ですか? そこで、ステージングされていない変更をプロジェクトから消し去る必要がありますが、今後の作業のためにどこかに保存しておく必要があります。

これは、非常によく似ています git stash コマンドを使用します。しかし git stash を実行すると、アンステージとステージングの両方の変更が私のプロジェクトから取り除かれます。そして、次のようなものは見当たりません。 git stash uncached .

解決方法は?

アップデート2:

なぜこの答えに文句を言う人がいるのかわかりません。私の場合は完璧に動作しているようです。 -u フラグ

完全なコマンドは次のようになります。 git stash --keep-index -u

そして、以下がそのスニペットです。 git-stash ヘルプ

keep-index オプションを使用すると、すでに追加されたすべての変更が はそのまま残ります。

include-untracked オプションを使用した場合、すべての未追跡のファイルは を使用してクリーンアップします。 ディレクトリを非常にクリーンな状態にします。代わりに --all オプションを使用した場合 に加えて、無視されたファイルも保管され、クリーニングされます。 未追跡のファイル

そして、これがその様子を写したgifです。

更新しました。

これが選択された答えであっても、多くの人が[下の答え](https://stackoverflow.com/a/34681302/292408)が正しいと指摘しているので、確認することをお勧めします。

今日(2020/1/31)も自分の答えをgitバージョンでテストしてみました。 2.24.0 追跡されていないファイルについて、上に小さなメモを追加しました。 もし、うまくいかないと思われる方は、gitのバージョンも教えてください。

古い回答 :

もし --keep-index オプションが使われると、すでにインデックスに追加されているすべての変更がそのまま残されます。

git stash --keep-index

から のドキュメントを参照してください。 git-stash :

部分コミットのテスト

を使用することができます。 git stash save --keep-index を2つ以上作成したい場合 ワークツリーの変更点のうち、より多くのコミットを行い、その内容をテストしたい場合。 は、コミットする前に各変更を行います。

# ... hack hack hack ...
$ git add --patch foo            # add just first part to the index
$ git stash save --keep-index    # save all other changes to the stash
$ edit/build/test first part
$ git commit -m 'First part'     # commit fully tested change
$ git stash pop                  # prepare to work on all other changes
# ... repeat above five steps until one commit remains ...
$ edit/build/test remaining parts
$ git commit foo -m 'Remaining parts'

しかし、ステージングされた変更点のみを視覚的に確認したいだけなら difftool :

git difftool --cached