2016-04-12 5 views
2

1つのファイルを隠したい。 git stashはパラメータとしてファイル名を許可しないので、私はgit stash -pを使用し、残りの変更の中からファイルを選択する必要があります。"git"コマンドでファイルが表示される順序を設定できますか?

コミットのためにステージングされていない変更には、多くのファイルが含まれていない場合や、隠したいファイルが最初のファイルの場合にはうまく動作します。

しかし、多くのファイルがあり、隠したいファイルがリストの最後にある場合は、目的のファイルに到達するまで他のファイルをすべて調べなければなりません。これはちょっと面倒です。

私は疑問に思っていました:コミットのためにステージングされていないファイルの順序を定義する方法はありますか?git stash -p

+1

なぜこれが必要ですか? [this](http://stackoverflow.com/questions/3040833/stash-only-one-file-out-of-multiple-files-that-have-changed-with-git)あなたのために働くことができますか? – Francesco

+0

'git stash'は、あなたの現在のブランチ(実際には*ブランチにはありません)にはないコミット、より正確には少なくとも2つ、時には3つのコミットを作成するだけで十分です。ブランチラベルは移動可能なので、コミットを作成してラベルをシャッフルして、他のブランチでコミットを作成したように見えるようにすることができます。コミットを作成するためのツールは、特定のファイルを指定できるようにするため、ここで使用することを検討してください。 – torek

+0

@torek良いヒント!しかし、git stashはファイル名のように単純なものを許可していません:) – fedorqui

答えて

1

あなたはこれを行うことができます:

git add file 
git stash -k -u 
git stash 
git stash pop [email protected]\{1\} 
git checkout file 

をそれは完全にハックだし、変更を上演していない場合は、それがこれを行う前にのみ機能しますが、私の知る限りでは良い方法にはありませんあなたが必要とするものをしなさい。

まず、私たちはその後、fileを隠し、その後、我々は(も人跡未踏のファイルを取るために、インデックスでfile-uを保つために-k)他のすべてを隠し、インデックスにfileを追加します。最後の2つのコマンドはクリーンアップです。最初の隠しを適用してすべてを取得し、次にcheckoutfileを削除します(stashのように)。最終的にはstashfileの変更とディレクトリのみを変更し、fileを除きHEADリビジョンに戻す必要があります。

+1

面白い回避策、ありがとう!あなたが言及しているように隠し場が空になるので、少し危険です。ところで、stash @ {1} 'の中かっこをエスケープする必要はありません。 – fedorqui

+1

@fedorqui隠してはいけませんが、これまでに行った 'git add'をリセットします。私が考える脱出についてはあなたが正しいと思っています。私はzshで私の自動完成を聞かせてくれました。 :-) –