タイトルが示すように、私は友人と私が共有できるgitリポジトリからプルしようとしていますが、コミットできますが、彼はコミットできますが、プルしようとするといつでも失敗します: DIRTY_WORKTREE
私たちは両方ともgitに対して非常に新しいので、この問題を修正する方法についての指示はありません。
Gitコマンドラインクライアントを使用して、同様の問題を修正できました。 Eclipse(egit)はDIRTY_WORKTREEとだけ言っていましたが、コマンドラインで複数の競合するファイルを見ました。コマンドラインからgit merge master
を使用すると、Eclipseで競合を簡単に解決できました。だから私にとってこれはエギットの問題のようです。
別のアプローチとして、進行中の作業がない場合は、HEADをハードにリセットしてみてください。
EGitの場合: 現在のHEADのリセット :
選択する
Team -> Reset...
プロジェクト。これにより、ブランチまたはタグを選択できるダイアログが開きます。
インデックスおよび作業ツリーを上記ブランチの最後のコミットにリセットするために、現在のブランチでHEADをリセットします。
次に、プルを試してください。
コミットされていない変更がありました。コミットしてからマージすると、ダーティワークツリーの問題はなくなりました。
現在使用しているバージョンには、まだコミットされていない編集が含まれているようです。そのため、これらの編集を削除するか、コミットする必要があります。それらをコミットすると、マージの競合が発生する可能性があることに注意してください。
プロジェクトフォルダーにある.gitignoreを削除してから、マージします。マージには競合が表示されます。競合を解決してから変更をプッシュする必要があります。
EclipseでTeam Synchronizing Viewに行き、そこからプロジェクトを右クリックし、「上書き」を押してすべてのローカル変更を上書きしました。その後、マージを再試行してください。
私の場合、DIRTY_WORKTREEは次のシーケンスによって引き起こされました。
このシナリオでは、Eclipseは作業ツリーが汚れていると見なします。実際、それは明らかではありません2つのファイルセットの一方がいくつかのファイルを無視し、もう一方が無視しない場合の2つのファイルセットを比較する。
Eclipseで問題を解決するにするには、次のことを行いました。
Originブランチへのローカルブランチをオーバーライドする場合。
Gitリポジトリビューに移動し、Originマスターをクリックし、[リセットを選択]->現在のHEADとブランチへのリセットを表示します。ローカルの変更を完全に上書きする場合は、HARDリセットを選択します。
Eclipseでも同様の問題があり、コミットされていない変更は不均一です。コミットした後、私はマージすることができ、すべてが本来の状態に戻っています。ソースコードを見て、変更を確認してください。ない場合は、ハードリセットできます。
別のケースを追加するために、DIRTY_WORKTREEを持っています。Githubプロジェクトにコミットしているのは私だけです。そのため、EGitでプッシュブランチを実行しました。
危険:他の人が同じプロジェクトで作業している場合、このアクションは発散以来のコミットを削除します。
コミットせずに変更がある場合、Eclipseは変更をプルしようとするかどうかをアドバイスします。これを解決するには、変更を破棄するか、これらのファイルをコミットします。
ソース: https://www.Eclipse.org/forums/index.php?t=msg&th=890477&goto=1565668&#msg_1565668
このエラーは、まだコミットされていないファイルにローカルな変更を加えたときに発生します。 gitの用語では、作業ツリーにコミットされていない変更があります。
この状況にあるときにプルしようとすると、gitはローカルの変更をどうするかわかりません。それらを破棄して、リモートから変更をプルする必要がありますか?それらをコミットする必要がありますbeforeリモートから変更をプルしますか?それが失敗する理由です。
ローカルリポジトリに変更をプルする前にこの問題を回避するには、ローカルの変更をコミットするか、隠しておくか、破棄する必要があります。作業ツリーに保留中のローカル変更がなければ、エラーなしでプルできるはずです。
影響を受けるファイルを削除して、もう一度プルしてみてください。その後、変更をgitにプッシュします。私は同じ問題を抱えており、これは私のために働いた。