gitがファイルに「更新が必要」と言っているのはどういう意味ですか?


156

gitが時々吐き出す "[file]:needs update"メッセージの適切な説明を見つけることができません。公式のgit FAQでさえ、TODOとしてマークされていることを説明しています。誰かが説明できればA)それが何を意味するか; とB)それを修正する方法、私は非常に感謝します。


1
:あなたもGitFaqが答えていないと述べたといい質問、git.wiki.kernel.org/index.php/...
ジャスティン・エティエ

1
あなたは見ることができますstackoverflow.com/questions/5367734/...

1
どのコマンドがこれを生成するか正確にわかりますか?そして、どのバージョンのGitですか?私はそれらをUIから削除しようとしたので、最近のGitは、忘れてしまった場所を除いて、これを教えてくれません;-)
Matthieu Moy、2015

回答:


108

これは、どこかからの変更をマージしようとしていることを意味しますが、変更にはダーティなファイルへの変更が含まれます(現在、作業ツリーで変更されています)。未解決の変更をコミットするか、それらを隠しておき、更新するために何をしているのかをプル/リベース/マージ/プルして、アンスタッシュする必要があります


4
これは実際にはプルではなく、プルの一部であるマージです。同じ問題でローカルブランチをマージしようとすると、同じエラーが表示されます。他のマージ操作(apply、stash apply ...)は、同じエラーではない場合でも同様のエラーを出力すると思います。
カスカベル2010

ああ、ありがとう。それは実際に理にかなっています。別のブランチをチェックアウトする前に、変更を確実にコミットする必要があると思います。
rofrankel

7
検索結果に役立つ場合は、この問題にgit svn rebase出くわして、ダーティーな作業コピーを処理しようとしました。Stashの保存、リベース、Stashのポップなど、すべてが世界に正解でした。
アダムタトル

1
ファイル自体は変更されない可能性があります。ファイルの属性(権限など)を変更しても、これが発生する可能性があります。
サイボーグ

22

他の人が指摘したように、更新の必要性のメッセージは、ファイルがダーティである、つまり古くなっていることを意味します。しかし、その代わりにリセットを行うと、再びすべてやり直すのか、何に行うことができることは、単純でgit status、その後git add <file> あれば、それは上だ変更されたリスト。以前にファイルを既に追加できたが、その後それを変更したため。これは私に起こりました、そしてこの単純でadd私は問題を解決しました。


7

本番/宛先サーバー、cdアプリケーションを含むディレクトリにログインし、これら2つのコマンドを実行します。

1.最新バージョンにリセット

警告、これによりすべての変更が削除されます:

git reset --hard HEAD

2.変更をプルします

git pull origin master


1
[git reset --hard HEAD]がうまくいきました。私はWindows共有ドライブからコミットしましたが、同じフォルダー(Z:/ var / www / html /にマップされている)であるにもかかわらず、Ubuntuディレクトリには今行ったコミットが反映されません。これを実行すると、[git status]と[git pull]の両方に最新の状態が表示されます。
キースDC

これは私にとってもうまくいった解決策です。WindowsでSourceTreeを使用してgitサブツリーを使用しようとしましたが、プロセスでひどく台無しになりました。
Artem Russakovskii 2015年

3

リンクされた他の質問への回答が言うように、メッセージは単にあなたが顕著な変化を持っていることを意味します。これは、たとえば、を使用していくつかの変更をステージングした場合git add、気が変わり、git reset HEAD file最初からやり直すつもりで実行できます。


2
git reset HEAD file同じメッセージが表示される
エキスパート

2

このエラーは、リベースプロセスがターゲットブランチ上にないファイルに追加の変更加えたときに発生する可能性があります。

私にとってトリッキーな部分は.gitattributes、私のリポジトリのファイルにありました。新しいバイナリファイルタイプが別のブランチに追加されましたが、その処理はテキストファイルとして強制されました。gitによってファイルがrepoからダウンロードされると、EOL(実際にはバイナリ値のバイト)が置き換えられ、バイナリの違いが発生しました。

新しいエントリを追加して、新しいファイルタイプをバイナリとして処理し、プロセス全体を再試行すると、問題が解決しました。


1

私の場合、私は得続けました

assets/ElipseThree.png: needs update
You must edit all merge conflicts and then
mark them as resolved using git add

これらのファイルは自分のディレクトリにありましたが、現在のブランチで名前が変更されていました。だから修正するために、私は走った

$ git mv assets/ElipseThree.png assets/elipseThree.png
$ git add assets/elipseHalfFull.png 
$ git rebase --continue

そしてそれは私に続けることを許しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.