762

Gitプルで次のエラーメッセージを無視するにはどうすればよいですか?

次のファイルへのローカル変更は、マージによって上書きされます

それらを上書きしたい場合はどうなりますか?

のようなことを試しましgit pull -fたが、何も機能しません。

明確にするために、すべてではなく、特定の変更のみを上書きしたいと思います。

4

37 に答える 37

579

gitによって追跡されていないファイルを含むすべてのローカル変更を作業コピーから削除する場合は、単にそれらを隠しておきます。

git stash push --include-untracked

それらがもう必要ない場合は、その隠し場所をドロップできます。

git stash drop

すでにステージングした変更を隠したくない場合は(たとえば、を使用しgit addて)、オプションを追加します--keep-index。ただし、これらの段階的な変更が上流の変更と衝突した場合でも、これによりマージが防止されることに注意してください。


ローカル変更の特定の部分のみを上書きする場合は、次の2つの可能性があります。

  1. 上書きしたくないものはすべてコミットし、残りは上記の方法を使用します。

  2. git checkout path/to/file/to/revert上書きしたい変更に使用します。ファイルがを介してステージングされていないことを確認してくださいgit reset HEAD path/to/file/to/revert

于 2013-01-14T12:17:14.840 に答える
395

他の2つの答えの助けを借りて、私は直接的な解決策を考え出しました。

git checkout HEAD^ file/to/overwrite
git pull
于 2013-01-14T14:04:31.867 に答える
365

これは、すべてのローカル変更をオーバーライドするために機能し、IDを必要としません。

git reset --hard
git pull
于 2015-10-01T01:07:30.600 に答える
91

ここに非常に多くの答えがあるので、さらに別のものを追加するのは嫌ですが、上記のすべては必要以上に不格好です。Gitが混乱しているようで、変更されていないファイルを変更したと言っているので、これを常に行う必要があります(変更されていないため元に戻すことはできませんが、変更されていると思われるためプルできません)私がこれまでに見つけた最速は次のとおりです。

git stash
git stash drop
git pull

注意ローカルの変更は失われます

于 2020-01-21T18:21:01.947 に答える
80

段階的な変更を破棄するソリューションは次のとおりです。

git reset file/to/overwrite
git checkout file/to/overwrite
于 2013-10-31T13:45:56.457 に答える
79

マージを行う前に変更をコミットするか、変更を隠しておくことができます。

  1. git stash save
  2. git merge origin/master
  3. git stash pop
于 2014-03-18T12:14:51.127 に答える
55

1つのファイルのローカル変更を破棄する場合は、次の操作を実行できます。

git checkout -- <file>

次に、次のようにしてファイルを最新バージョンで上書きできます。

git pull
于 2015-08-04T12:38:39.310 に答える
32
git pull --rebase --autostash
  -r, --rebase[=false|true|merges|preserve|interactive]
      When true, rebase the current branch on top of the 
      upstream branch after fetching. If there is a 
      remote-tracking branch corresponding to the upstream
  --autostash, --no-autostash
      Before starting rebase, stash local modifications away if
      needed, and apply the stash entry when done

なぜこれがまだ答えられていないのかわかりませんが、ご覧のとおり、解決策は簡単です。ここでのすべての回答は同じことを示唆しています。ローカルの変更を削除/保存してアップストリームに適用してから、(もしそうならsave)ローカルの変更を一番上に適用します。

git pull --rebase --autostashステップバイステップとは何ですか:

1. your local changes saved by `--autostash`
2. your local commits saved by `--rebase`
3. commits from upstream applied to your branch
4. your local commits are restored on top of upstream
5. your local changes are restored to working directory

私の場合(おそらくあなたも):

ローカルで変更があります(作業ディレクトリでの変更):

ここに画像の説明を入力してください

リモート変更をプルしようとすると、エラーが発生します。

ここに画像の説明を入力してください

この変更は、ローカルの変更と交差しません。

ここに画像の説明を入力してください

したがって、pull --rebase --autostashローカルの変更を保存して問題なく自動的に適用すると、

ここに画像の説明を入力してください

今、私のローカルの変更は少し低くなっています: ここに画像の説明を入力してください

于 2020-02-11T15:48:00.667 に答える
25

リポジトリに削除されたファイルがいくつか含まれている場合master

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch
于 2014-02-05T06:24:39.287 に答える
16

時々、これらのどれも機能しません。厄介なことに、私が思うLFのせいで、うまくいくのはファイルを削除してからプルすることです。この解決策をお勧めするわけではありませんが、ファイルが存在しない場合、gitは変更(変更でさえない場合もあります)が上書きされることを無駄に通知せず、続行できます。

自己責任。

于 2015-08-20T18:37:29.920 に答える
14

git stash save --keep-index私のために働いていませんでした。

以下のコマンドは期待どおりに機能しました。

git reset --hard
git pull

必要がない場合は、すべてのローカル変更を上書きします。

于 2018-05-20T07:03:22.150 に答える
10

最近のGitでは、-r/ --rebaseonpullコマンドを追加して、フェッチ後に現在のブランチをアップストリームブランチの上にリベースできます。警告は消えるはずですが、解決する必要のあるいくつかの競合が発生するリスクがあります。


または、別のブランチを強制的にチェックアウトしてから、masterもう一度戻ることができます。例:

git checkout origin/master -f
git checkout master -f

次に、いつものようにもう一度引っ張ります。

git pull origin master

この方法を使用すると、隠し場所(git stash)や潜在的な権限の問題、ファイルのリセット(git reset HEAD --hard)、ファイルの削除( )などから時間を節約できますgit clean -fd。また、上記のことを覚えやすくなります。

于 2016-03-16T12:41:44.483 に答える
10

これを試して

git fetch --all 

git reset --hard origin/master

git pull origin master

強制的に引っ張るのは私にとっての仕事です

于 2020-12-23T01:26:45.507 に答える
8

これが問題を解決するための私の戦略です。

問題文

10個以上のファイルに変更を加える必要があります。試しPULL (git pull origin master)ましたが、Gitは次のように叫びました。

エラー:次のファイルへのローカル変更はマージによって上書きされます:マージする前に、変更をコミットするか、それらを隠してください。

実行してから実行しようとしましcommitpullが、どちらも機能しませんでした。

解決

ファイルは「ステージングエリア」(別名「インデックスエリア」)にあり、一部は「ヘッドエリア」(別名「ローカルGitディレクトリ」)にあったため、実際にはダーティステージにありました。そして、サーバーから変更をプルしたかったのです。

明確な方法でGitのさまざまなステージに関する情報については、このリンクを確認してください:GITステージ

次の手順に従いました

  • git stash(これにより、作業ディレクトリがクリーンになりました。変更はGitによってスタックに保存されます)。
  • git pull origin master(サーバーから変更をプルします)
  • git stash apply(スタックからのすべての変更を適用しました)
  • git commit -m 'message'(変更をコミットしました)
  • git push origin master(サーバーに変更をプッシュしました)
  • git stash drop(スタックをドロップします)

いつ、なぜ隠しておく必要があるのか​​を理解しましょう

ダーティ状態にある場合は、ファイルに変更を加えていることを意味します。その後、何らかの理由で、非常に緊急の作業のために別のブランチにプルまたは切り替える必要があるため、この時点ではプルまたは変更をコミットするまで切り替えます。stashコマンドは助けの手としてここにあります。

ProGIT、第2版から:

多くの場合、プロジェクトの一部に取り組んでいるとき、物事は厄介な状態にあり、他の何かに取り組むために少しの間ブランチを切り替えたいと思うでしょう。問題は、後でこのポイントに戻ることができるように、半分完了した作業のコミットを実行したくないということです。この問題に対する答えは、gitstashコマンドです。スタッシングは、作業ディレクトリのダーティな状態(つまり、変更された追跡ファイルとステージングされた変更)を取得し、いつでも再適用できる未完了の変更のスタックに保存します。

于 2017-04-16T13:54:00.253 に答える
8

この問題は、ファイルにローカルで変更を加え、Gitリポジトリに変更を加えたものと同じファイルが存在するためです。したがって、プル/プッシュする前に、ローカルの変更を隠しておく必要があります。

単一ファイルのローカル変更を上書きするには:

git reset file/to/overwrite
git checkout file/to/overwrite

すべてのローカル変更(すべてのファイルの変更)を上書きするには:

git stash
git pull
git stash pop

また、この問題は、マスターブランチとマージされていないブランチを使用していることが原因である可能性があります。

于 2018-01-14T13:19:33.223 に答える
8

git reset --hard && git clean -df

注意:これにより、追跡されていないファイルがリセットおよび削除されます。

于 2018-06-13T09:49:05.963 に答える
6

これは、ライブリモートサーバー上の変更を破棄し、ソース管理GitHubからプルするために機能しました。

git reset --hard
git pull origin master
于 2016-04-20T12:31:07.830 に答える
5

これをファイルの上書きに使用できます

git checkout file_to_overwrite
于 2015-06-27T10:06:42.610 に答える
5

この問題を解決する最良の方法は次のとおりです。

git checkout -- <path/file_name>

その後、次の方法でファイルを上書きできます。

git pull origin master
于 2017-04-12T09:19:18.057 に答える
4

サーバー上で本番環境の変更を保持する場合は、新しい構成アイテムにマージするだけです。処理方法は以下のとおりです。

git stash
git pull
git stash pop

たぶん、すべての操作を実行するわけではありません。次に何ができるかを知ることができます。

于 2017-04-19T11:49:11.630 に答える
3

特定の変更を上書きしたい場合は、どの変更を忘れたいかを伝える方法が必要です。

使用を中止する変更を選択的に隠してgit stash --patchから、その隠しを。で削除してみてくださいgit stash drop。次に、リモートの変更をプルして、通常どおりにマージできます。

于 2013-01-14T12:21:46.583 に答える
3

最も簡単な解決策は次のとおりです。

git reset --hard && git pull
于 2019-08-30T00:56:08.403 に答える
3

エラー「次のファイルへのローカル変更はマージによって上書きされます」は、まだコミットされていないローカルリポジトリにいくつかの変更があるために発生します。したがって、リモートリポジトリからプルする前に、ローカルリポジトリで変更をコミットするだけです。

リモートリポジトリにいくつかのブランチxyzがあり、そのリモートリポジトリxyzブランチをローカルリポジトリxyzブランチにマージ(コピー)したいとします。

{
git checkout xyz                  //check out to the respective branch in local repo
git commit -m "commiting message" //commit changes if any, in local repo branch xyz
git pull                          //it pulls remote xyz branch into local xyz branch
}
于 2019-10-23T18:00:06.810 に答える
3

私にとってこれはうまくいきました:-

  1. まず、追跡されていないすべてのファイルをクリーンアップしました。run-> git clean -f
  2. git pull
于 2021-07-06T07:51:31.650 に答える
2

私はこれの特別なケースを持っていました:私はそれに--assume-unchangedが付いているファイルを持っていました。git statusコマンドに変更が表示されなかったため、見つけるのが困難でした

于 2016-06-23T20:36:03.250 に答える
1

リポジトリ内のファイルを無視していましたが、無視するとgit pull upstream master次のエラーが発生しました。

エラー:次のファイルへのローカル変更は、マージによって上書きされます:myfile.jsマージする前に、変更をコミットするか、それらを隠してください。中絶

それを解決するために私は次のことをしました

git update-index --no-assume-unchanged myfile.js

それから私git statusはこのメッセージを受け取りました

ブランチマスターの場合ブランチは「origin/master」より4コミット遅れており、早送りできます。(「gitpull」を使用してローカルブランチを更新します)

コミット用にステージングされていない変更:(コミットされる内容を更新するには「gitadd...」を使用)(作業ディレクトリの変更を破棄するには「gitcheckout --...」を使用)

変更:myfile.js

コミットに変更は追加されません(「gitadd」および/または「gitcommit-a」を使用)

それから私はgit checkout myfile.js続いたgit pull upstream master。今回はgitpull操作が成功しました。

于 2017-03-14T14:43:59.210 に答える
1

マスターから引っ張っているときにこれに遭遇しました。

VisualStudioを使用した私がそれを処理した方法。

  1. まず、ソリューションでUndocommitを実行しました。
  2. 次に、Gitプルプロセスを実行しました。

お役に立てれば!

于 2017-09-19T19:53:48.273 に答える
1

私は試しましたが、プルする前に、コミットしていないすべてのファイルをコミットします。そうしないと、ASからそのメッセージを受信できなくなります。

于 2018-05-21T06:02:51.583 に答える
1

私はgitを初めて使用しますが、私のソリューションが良いアイデアかどうかはわかりません。

私はすべての答えをテストしましたが、どれもうまくいきませんでした!

しかし、私は別の解決策を見つけました:

1. Backup both of local and repository versions of the file.
2. Delete the file from repository.
3. git add .
4. git commit
5. git push

お役に立てれば。

于 2019-10-02T17:54:36.030 に答える
1

私の解決策はdelete、IDEの外部からのファイルが上書きされることpullでした。

(追跡されていないデータをいつでもバックアップして手動でマージできます)

于 2019-11-26T06:16:06.227 に答える
1

あなたのブランチがxxコミットによって'origin/ dev'の後ろにあるため、早送りすることができます。次のコマンドを試してください。

git checkout .
git pullenter code here

それがあなたの問題を解決することを願っています。

于 2021-11-30T12:48:07.860 に答える
0

このエラーが行末が原因である場合、

git add
git checkout mybranch

動作します。なぜそれが機能するのかよくわかりません。

于 2017-05-08T14:38:40.907 に答える
0

Pycharmの場合、Git->Revertを実行してからプルすることができます。

于 2018-01-23T21:53:02.013 に答える
0

git-lfsこのメッセージは、が使用され、ファイルポインタが実際のファイルによって上書きされた場合にも発生する可能性があります。

次に、以下を使用します。

git stash
git lfs migrate import
git pull

私の場合からの完全な出力

λ git stash
Saved working directory and index state WIP on master: 5d4ad47 Merge branch 'feature/...' into 'master'
Encountered 1 file(s) that should have been pointers, but weren't:
        public/apple-touch-icon.png

λ git pull
Updating 5a4ad44..b25f79d
error: Your local changes to the following files would be overwritten by merge:
        public/apple-touch-icon.png
Please commit your changes or stash them before you merge.
Aborting

λ git lfs migrate import
migrate: Fetching remote refs: ..., done
migrate: Sorting commits: ..., done
migrate: Rewriting commits: 100% (0/0), done
migrate: Updating refs: ..., done
migrate: checkout: ..., done


λ git pull
Updating 5d4ad47..a25c79a
Fast-forward
 public/apple-touch-icon.png | Bin 2092 -> 130 bytes
 public/favicon.ico          | Bin 6518 -> 1150 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)

https://github.com/git-lfs/git-lfs/issues/2839を参照してください

于 2018-05-16T21:30:30.033 に答える
0

同じエラーメッセージが表示されましたvimeditorsコマンドラインから
:PluginUpdateコマンドを実行しました

「マージする前に、変更をコミットするか、隠してください」

1.プラグインを含むフォルダを物理的に削除しました

rm -rf ~/.vim/bundle/plugin-folder/

2.そしてvimコマンドラインから再インストールしました
:PluginInstall!
私の〜/ .vimrcには、その宛先へのプラグインをビルドするための指示が含まれていたためです。

ここに画像の説明を入力してください

これにより、適切なフォルダーが作成され、
そのフォルダーに新しいパッケージが追加されました〜./.vim/bundle/ reinstalled -plugins-folder
」記号(PluginUpdateコマンドが失敗したため)が
+」記号に変更され、その後PluginUpdateコマンドを実行しました。

于 2019-05-06T15:27:38.107 に答える
0

上書きしてローカルの変更を失っても問題ないファイルを確認してから

git checkout --ours ${filePath}
git merge upstream/master
于 2020-07-03T07:28:14.387 に答える
-3

ローカルの変更をコミットし、commit-aをマージするだけです。

于 2020-06-15T14:54:12.360 に答える