Gitエラー「次のファイルへのローカル変更はマージによって上書きされます」の修正方法

Gitバージョン管理メカニズムで、「 次のファイルへのローカル変更はマージによって上書きされます」というエラーメッセージが表示されます 。 このエラーは、リモートリポジトリにも変更があるファイルを変更した場合に発生します。

Gitエラー:次のファイルに対するローカルの変更は、マージによって上書きされます

このエラーメッセージは、リモートリポジトリにも変更があるコミットされていないファイルがない場合は回避されます。 このメッセージが発生した場合は、他のチームメンバーに相談して意見を求めるのが最善です。 ローカルの変更をマージする場合でも、リポジトリにバージョンを保持する場合でも、全員が参加するのが最善です。

リポジトリとは何ですか? Gitのプッシュアンドプルとは何ですか?

リポジトリは、コードのストレージの一種であり、GitHubバージョン管理メカニズムを介してチームメンバーによって常に変更および取得されます。 「 プル」とは、Pycharmなどのローカルストレージ/ IDE(統合開発環境)にリポジトリの最新バージョンをプルしていることを意味します。

プルの後、コードを変更するか、機能を追加します。 完了したら、コードをリポジトリに「 プッシュ」して 、変更を保存して追加します。 コードは他の人にもアクセス可能になります。

Githubバージョン管理を初めて使用する場合は、最初にすべての基本事項を確認することをお勧めします。 この記事では、すでに基本的な知識があり、すべての詳細を知っていることを前提としています。

「次のファイルに対するローカルの変更はマージによって上書きされます」の修正方法

このエラーメッセージの解決は、何をしたいかによって異なります。 ローカルの変更を破棄してリポジトリ内の変更をプルするか、ローカルの変更をスタッシュに保存してリポジトリからバージョンをプルすることができます。 それはすべてあなたの好みに依存します。

したがって、先に進む前に、チームメンバーと相談し、全員が同じページにいることを確認することをお勧めします。 誤ってコミットしたり、間違ったバージョンをプッシュしたりすると、チーム全体に影響を与える可能性があります。

方法1:ローカルの変更を強制的にプルする

ローカル行われた変更を気にせず 、リポジトリからコードを取得したい場合は、強制的にプルすることができます。 これにより、コンピューターで行われたすべてのローカル変更が上書きされ、リポジトリ内のバージョンの複製コピーが表示されます。

IDEで次のコマンドを実行します。

 git reset-ハードgit pull 

これにより、すべてのローカルの変更が即座に破棄されるため、自分が何をしているかを把握し、ローカルの変更を必要としないようにしてください。

方法2:両方の変更を保持する(ローカルおよびレポから)

両方の変更(ローカルで行われた変更とリポジトリに存在する変更)を保持する場合は、変更を追加してコミットできます。 プルすると、明らかにマージの競合が発生します。 ここで、IDEのツール(Difftoolやmergetoolなど)を使用して、2つのコードを比較し、保持する変更と削除する変更を決定できます。 これが中間的な方法です。 手動で削除するまで、変更は失われません。

 git add $ the_file_under_error git commit git pull 

マージの競合が発生したら、これらの競合解決ツールをポップして、行ごとに確認します。

方法3:両方の変更を保持するがコミットしない

この状況は、デバッグしているコードが部分的に壊れているために、開発者がコミットする準備ができていない場合に時々発生します。 ここで、変更を安全に隠し、リポジトリからバージョンをプルして、コードを隠します。

 git stash save --keep-index 

または

 git stash 
 git pull git stash pop 

スタッシュをポップした後に競合が発生した場合は、通常の方法で競合を解決する必要があります。 次のコマンドも使用できます。

 git stash apply 

競合のために隠されたコードを失う準備ができていない場合は、ポップの代わりに。

マージが実行可能なオプションのように思えない場合は、リベースを行うことを検討してください。 リベースは、一連のコミットを新しいベースコミットに移動または結合するプロセスです。 リベースの場合、コードを次のように変更します。

 git stash git pull --rebase origin master git stash pop 

方法4:コードの「特定の」部分に変更を加える

コードの特定の部分に変更を加えたいが、すべてを置き換えたくない場合は、上書きしたくないすべてをコミットしてから方法3に従うことができます。リポジトリに存在するバージョンから上書きしたい:

 git checkout path / to / file / to / revert 

または

 git checkout HEAD ^ path / to / file / to / revert 

また、次の方法でファイルがステージングされていないことを確認する必要があります。

 git reset HEAD path / to / file / to / revert 

次に、pullコマンドを続行します。

 git pull 

これにより、リポジトリからバージョンを取得しようとします。

興味深い記事