Gitプルで次のエラーメッセージを無視するにはどうすればよいですか?
次のファイルに対するローカルの変更は、マージによって上書きされます
それらを上書きしたい場合はどうなりますか?
私はのようなものを試しましたgit pull -f
が、何もうまくいきません。
明確にするために、すべてではなく、特定の変更のみを上書きしたいと思います。
git config core.fileMode false
時間を節約
Gitプルで次のエラーメッセージを無視するにはどうすればよいですか?
次のファイルに対するローカルの変更は、マージによって上書きされます
それらを上書きしたい場合はどうなりますか?
私はのようなものを試しましたgit pull -f
が、何もうまくいきません。
明確にするために、すべてではなく、特定の変更のみを上書きしたいと思います。
git config core.fileMode false
時間を節約
回答:
gitによって追跡されていないファイルを含むすべてのローカル変更を作業コピーから削除する場合は、単にそれらを隠します。
git stash push --include-untracked
それらがもう必要ない場合は、その隠し場所をドロップできます。
git stash drop
既にステージングした変更を(たとえば、git add
- を使用して)隠したくない場合は、オプションを追加します--keep-index
。ただし、これらの段階的な変更が上流からの変更と衝突した場合でも、これによりマージが防止されることに注意してください。
ローカル変更の特定の部分のみを上書きする場合は、2つの可能性があります。
上書きしたくないものはすべてコミットし、残りについては上記の方法を使用します。
git checkout path/to/file/to/revert
上書きしたい変更に使用します。ファイルがを介してステージングされていないことを確認してくださいgit reset HEAD path/to/file/to/revert
。
git checkout HEAD^ path/to/file/to/revert
でした。HEAD ^を使用すると、すべての違いが生まれます。
save --keep-index
」を除外する必要がありました。
他の2つの答えの助けを借りて、私は直接的な解決策を考え出しました:
git checkout HEAD^ file/to/overwrite
git pull
これは私にとってすべてのローカル変更を上書きするために機能し、アイデンティティを必要としません:
git reset --hard
git pull
段階的な変更を破棄するソリューションは次のとおりです。
git reset file/to/overwrite
git checkout file/to/overwrite
マージを行う前に変更をコミットするか、それらを隠しておくことができます。
git stash save
git merge origin/master
git stash pop
--autostash
オプションは--rebase
オプション(
1つのファイルに対するローカルの変更を破棄したい場合は、以下を実行できます。
git checkout -- <file>
次に、ファイルを最新バージョンで上書きするだけです。
git pull
git reset HEAD~
、git checkout
git checkout -- <file>
失敗するerror: pathspec '<file>' did not match any file(s) known to git.
時々、これらのどれも機能しません。不愉快なことに、LFの問題により、ファイルを削除してからプルするのがうまくいくと思います。私がこのソリューションをお勧めするわけではありませんが、ファイルが存在しない場合、gitは変更(変更されない場合もある)が上書きされることを無意味に通知しないので、続行できます。
自己責任。
最近のGitでは、-r
/ --rebase
on pull
コマンドを追加して、フェッチ後に現在のブランチを上流のブランチの上にリベースできます。警告は消えるはずですが、解決する必要があるいくつかの競合が発生するリスクがあります。
別の方法として、別のブランチを強制的にチェックアウトして、次に戻ることもできますmaster
。例:
git checkout origin/master -f
git checkout master -f
次に、いつものようにもう一度引っ張ります:
git pull origin master
この方法を使用すると、スタッシング(git stash
)と潜在的な権限の問題、ファイルのリセット(git reset HEAD --hard
)、ファイルの削除(git clean -fd
)などから時間を節約できます。また、上記のことを覚えておくのも簡単です。
git reset --hard && git clean -df
注意:これにより、追跡されていないファイルがリセットされ、削除されます。
この問題を解決する最良の方法は次のとおりです。
git checkout -- <path/file_name>
その後、次の方法でファイルを上書きできます。
git pull origin master
git checkout -- path/*
1回だけ使用しましたが、プルアフターを実行することができました。
これが問題を解決するための私の戦略です。
問題文
10以上のファイルを変更する必要があります。試してみましたPULL (git pull origin master)
が、Gitは叫びました:
エラー:次のファイルに対するローカルの変更はマージによって上書きされます:マージする前に、変更をコミットするか、隠してください。
私たちは、実行しようとしたcommit
当時とpull
、彼らはどちらか動作しませんでした。
解決
ファイルが「ステージング領域」または「インデックス領域」にあり、一部が「ヘッド領域」または「ローカル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版から:
多くの場合、プロジェクトの一部で作業しているとき、物事は厄介な状態にあり、ブランチを切り替えて少し他の作業を行う必要があります。問題は、あとでこの時点に戻ることができるように、半完了した作業をコミットしたくないということです。この問題の答えはgit stashコマンドです。スタッシングは、作業ディレクトリのダーティな状態(つまり、変更された追跡ファイルと段階的な変更)を取得し、いつでも再適用できる未完了の変更のスタックに保存します。
TL; DR;
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
ローカルの変更が保存され、問題なく適用しました自動的に自動的に
これには特別なケースがありました。--assume-unchangedが付いたファイルがありました。git status
コマンドに変更が表示されなかったため、場所を見つけるのが困難でした
私は私のリポジトリのファイルを無視していました、そしてそれをしたとき、私はgit pull upstream master
次のエラーを受け取りました:
エラー:次のファイルに対するローカルの変更は、マージによって上書きされます:myfile.jsマージする前に、変更をコミットするか、それらを隠してください。中止しています
それを解決するために、私は次のことをしました
git update-index --no-assume-unchanged myfile.js
その後、私git status
はこのメッセージを受け取りました
ブランチマスター上ブランチは4つのコミットによって「origin / master」の背後にあり、早送りすることができます。(「git pull」を使用してローカルブランチを更新します)
コミットのためにステージングされていない変更:(コミットされるものを更新するには「git add ...」を使用)(作業ディレクトリの変更を破棄するには「git checkout-...」を使用)
変更:myfile.js
コミットに変更が追加されていません( "git add"や "git commit -a"を使用してください)
その後、私はgit checkout myfile.js
続いたgit pull upstream master
。今回はgit pull操作が成功しました。
ローカルリポジトリにまだコミットされていない変更があるため、「次のファイルに対するローカルの変更はマージによって上書きされます」というエラーが発生するため、リモートリポジトリからプルする前に、ローカルリポジトリの変更をコミットするだけです。
リモートリポジトリにブランチ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
}
このメッセージは、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(-)