web-dev-qa-db-ja.com

git stashにステージングされていない新しいファイルを含めるにはどうすればよいですか?

私はgitの専門家ではありませんが、数年使用しています。最近、私はスタッシングに関連した奇妙な行動に気づきました。私にとっては部分的にしか機能していないようです。

たとえば、今日、コミットされていない4つの変更を隠そうとしました。 1つのファイルがスタッシュに追加され、残りの3つはコミットされていない変更として残りました。数回試してみましたが、最初の試行の後、「保存するローカル変更はありません」と表示されましたが、ステータスにはまだコミットされていない3つの変更が表示されました。

しかし、偶然にも、以前はスタッシュでなかった変更を最初にステージングすると、それらは通常どおりスタッシュされることがわかりました。いろいろ試してみましたが、これは繰り返し可能です。すべての変更がコミットされていない場合、1つの変更のみが隠されます。 「問題」の変更がステージングされると、すべての変更がスタッシュされます(「良好な」変更がステージングされるかどうかは関係なく、常にスタッシュされます)。

これはバグですか、何か間違っていますか?

Git for Windows 2.8.2およびGit Extensions 2.48.05を使用しています。

Git Extensions GUIを使用して変更を隠そうとしても、コンソールを使用して変更を隠そうとしても関係ありません。

編集:スタッシングの前に4つの変更すべてをステージングすると、スタッシュポップを行うと、以前と同様に3つの問題の変更がステージングされますが、常にスタッシュする良い変更はコミットされません。そのため、スタッシュポップは、スタッシュの前の状態に状態を往復しません。これも繰り返し可能です。

19
Simon Tewsi

問題は、デフォルトでは stash コマンドに追跡されていないファイルが含まれないことです。

追跡されていないファイルを含めるには、-u--include-untracked) 国旗:

git stash -u

-include-untrackedオプションを使用すると、すべての追跡されていないファイルも隠され、git cleanでクリーンアップされ、作業ディレクトリは非常にきれいな状態。

32
Jonathan.Brink