2013-05-08 15 views
11

現在のフォルダとそのサブフォルダの変更のみを変更しておきたいと思います。 どうすれば実現できますか?現在のフォルダのstashの変更を行う方法

私は明白なアプローチ - git stash .を試しましたが、うまくいかないようです。

私は一時的なコミットを作成して後で削除することができますが、git stashが特定のフォルダを隠すことをサポートしているかどうかを知りたいと思います。

+0

エラーは何ですか? – Shobit

+0

@Shobit 'git stash'コマンドのヘルプセクションが表示されます – stdcall

+0

できません。 'git stash'は作業ツリーにコミットされていない変更を保存します。 –

答えて

10

git stashでは、1つのコマンドで部分的なディレクトリを保存することはできませんが、いくつかの選択肢があります。

git stash -pを使用すると、隠したい差分のみを選択できます。

git stash -pの出力が大きい場合や、スクリプト可能なソリューションが必要な場合や、一時的なコミットを作成しても構わない場合は、サブディレクトリ内の変更以外はすべてコミットを作成してから、コミットを巻き戻します。コードでは:

git add -u :/ # equivalent to (cd reporoot && git add -u) without changing $PWD 
git reset HEAD . 
git commit -m "tmp" 
git stash  # this will stash only the files in the current dir 
git reset HEAD~ 
+0

それを試して、いいえ...良い方法でなければなりません – stdcall

+0

@Mellowcandle何が問題なのですか?なぜ機能しないのですか? –

+0

すべての変更のdiffをプロジェクトツリーに出力します。次に、必要な特定のフォルダにあるファイルを手動で選択する必要があります。私はそのフォルダ内のファイルの名前を知らない。それは私の問題の実行可能な解決策ではありません – stdcall

5

これはあなたのために働く必要があります。

cd <repo_root> 
git add .   # add all changed files to index 
cd my_folder 
git reset .  # except for ones you want to stash 
git stash -k  # stash only files not in index 
git reset   # remove all changed files from index 

基本的に、それはすべてあなたが隠したいフォルダ(またはファイル)を除いて、インデックスにファイルを変更し追加されます。次に、-k--keep-index)を使用してそれらを隠します。最後に、インデックスを開始した場所に戻します。

+3

これは実際には別のことを行います:' git stash -k 'はインデックスをそのまま残すので、インデックスの変更は削除されませんが、新しい隠しはインデックス**からの変更**とそれに含まれていない**の両方を持つので、"フルいずれにしても隠れている。 –

-1

SourceTreeやTortoiseGitのようなGUI gitインターフェースをチェックアウトすることができます。私が個人的に亀に行くのは、多くのコマンドラインコマンドを実行しようとするよりはるかに高速です。

+4

あなたは私がターミナルで働いているのを見たことがありません...私は本当に速く働きます – stdcall

関連する問題