23

時折、次のことをすると...

git reset --hard
HEAD is now at 0123abde comment is here
git pull
Updating 0123abde..456789fa

エラーが発生します...

error: Entry 'filename' not uptodate. Cannot merge.

私が見つけた唯一の回避策は、「git reset --hard」を実行し、問題のあるファイルを削除してから「git pull」を実行することです。それは私には正しくないようです。ハード リセットですべてのローカル変更を削除して、マージの問題なしに最新のものをプルできるようにすべきではありませんか? 私はgitを間違って使用していますか? :)

これは CI マシン上にあるため、ここでの変更は望ましくありません。Windows Vista で git バージョン 1.6.1.9.g97c34 を使用しています。

4

6 に答える 6

14

" " の背後にある一般的な考え方Entry 'filename' not uptodate. Cannot merge.は次のとおりです。

チェックアウトと新しいブランチへの変更が続行された場合、上書き、削除、または失われる作業ディレクトリ内のファイルへの変更があります。

このメッセージは一時的に「誤った」ものになる可能性があると報告されていますが (「 git pull」がマージを試みる前にインデックスを更新しなかった可能性があります)、修正は Git1.6.1 で行われました。
ただし、まだ mSysGit 1.6.1 にある可能性があるため、より新しい mSysGit バージョンでも同じエラーが表示されますか? (1.6.3 と同様)


Git 2.30.1 (2021 年第 1 四半期) より前は、" git stash" ( man )はまばらにチェックアウトされた作業ツリーではうまく機能しませんでした。

commit ba359fdcommit b34ab4acommit a31e48d (2020 年 12 月 1 日) by Elijah Newren ( newren)を参照してください。
( 2021 年 1 月 15 日、コミット 62fb47aJunio C Hamanoによってマージされました)gitster

t7012: スパース チェックアウトでの stash apply のバグを示すテストケースを追加します。

署名者: Elijah Newren

sparse-checkout で stash を適用すると、特に、sparseness の定義に使用されるパターンが stash の作成時と適用時の間に変更された場合、多くのバグが発生します。

主な問題は、スタッシュが部分的にしか適用されない場合があることです。

ほとんどの場合、警告やエラーは表示されず、終了ステータスは 0 で、サイレントに実行されます。

ただし、翻訳されていないエラー メッセージが表示され、stash アプリケーションが早期に中止される場合がいくつかあります。

1 つ目は、ビットが設定されているにもかかわらずファイルが存在するSKIP_WORKTREE場合です。この場合、表示されるエラー メッセージは次のとおりです。

error: Entry 'PATHNAME' not uptodate. Cannot merge.

もう 1 つの状況は、スタッシュに作業ツリーに追加する新しいファイルが含まれている場合です。この場合、コードは早期に中止されますが、stash はまだ部分的に適用されており、次のエラー メッセージが表示されます。

error: NEWFILE: does not exist and --remove not passed
fatal: Unable to process path NEWFILE
于 2009-05-18T17:04:31.037 に答える