2016-11-03 8 views
0

私は初めてgit stash saveを試しました。それは正常に働いた。それから私はgit stash applyを試しましたが、私のコミットされていない変更が復元されていた間に、私の作業コピーのルートからのランダムなディレクトリが削除されました。なぜ私はそれが正確なdirを選んだのかわからない、そこにルートのような他のdirsがたくさんある。`git stash apply`は私の作業コピーからランダムなディレクトリを削除しました

git stash save出力:

Saved working directory and index state WIP on clipping: cfeac4b - applying the solution from http://stackoverflow.com/questions/40385482/why-cant-i-use-opengl-es-3-0-in-qt 
HEAD is now at cfeac4b - applying the solution from http://stackoverflow.com/questions/40385482/why-cant-i-use-opengl-es-3-0-in-qt 

短縮git stash apply出力:

Removing debug_stencil_not_working/textureandlight.js 
Removing debug_stencil_not_working/qtlogo.png 
[... more removes here ...] 
On branch clipping 
Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

     new file: documentation/textureSize_missing.txt 

Changes not staged for commit: 
    (use "git add/rm <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

     deleted: ../debug_stencil_not_working/qtlogo.png 
     deleted: ../debug_stencil_not_working/textureandlight.js 
     [... more deleted files here ...] 
     modified: main.cpp 
     modified: main.qml 
     [... more modified files here ...] 

Untracked files: 
    (use "git add <file>..." to include in what will be committed) 

     ../dbg_repeater/dbg_repeater.pro.user 
     debug_stencil_not_working/ 
     [... more files and dirs here ...] 

注:削除された dirがコミットしてプッシュDIRました。コミットされていないローカル変更はありませんでした。

このランダムなディレクトリが削除された理由は何ですか?

また、このディレクトリを復元するにはどうすればよいですか。 github Webインターフェイスのルートを参照すると、そこにあります。しかし、私はgit pull origin clippingを試して、それは私の作業コピーにそのディレクトリを引き戻さなかった。

編集:私はそれを復元する方法を考え出しました。 TortoiseGitのコンテキストメニューで「Diff」を選択し、リストの中に削除されたファイルが「見つからない」と表示されました。私はそれらをすべて選択し、右クリックして「元に戻す」を選択しました。まだ最初の場所が削除された理由は分かりません。

+0

'apply'(' drop'ではなく)を使用した場合、stashはまだ残っているはずです。そのため、 'git stash show'で調べることができます。これは実際には、インデックスコミットではなく、作業ツリーコミットのみを示しているので、別のステージングとダーティーな作業ツリーを実行した場合、別のステップが必要になる可能性があります。 – torek

+0

@torek:おかげさまで、 'git stash show'の出力ではどうしたらいいですか? –

+0

Dファイルがあるかどうか確認してください。何も表示されない場合は、stashペア( 'stash^1')の基底とインデックスコミット(' stash')を比較する 'git diff --name-status stash^1 stash'を試し、 *それらの*は 'D 'として表示されます。 – torek

答えて

0

私は同じ問題を抱えていましたが、.gitignoreファイルの1つに、そのディレクトリのエントリが削除されていることが判明しました。 ディレクトリ/ *またはディレクトリ/ ** ディレクトリの後にワイルドカード文字が続く場合にのみ発生します。私の場合には、その行を削除

は、問題を解決し(それはとにかくされていないはず)

私は申し訳ありませんが、Gitはこの、多分他の誰か缶を行い、なぜ私が説明することはできません。

+0

削除されたdirのルートに、障害のある.gitignoreファイルが含まれていましたか?また、削除されるディレクトリが 'foo'と呼ばれる場合、関連する行は' foo/* 'のように見えますか? –

+0

削除されたディレクトリのルートに障害のある.gitignoreが含まれていませんでした。 –

+0

あなたが示唆しているようにエントリが表示されます(bin/bin-ext/integration/*) –

関連する問題