プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

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

ローカルマシンで行ったコミットされていない変更とリモートリポジトリのコンテンツの間に競合がある場合、リモートリポジトリからコードをプルすることはできません。これにより、保持したいコードを上書きすることから保護されます。

このガイドでは、「次のファイルへのローカル変更はマージによって上書きされる」エラーと、エラーが発生する理由について説明します。また、このエラーを解決する方法を学ぶことができるように、例を見ていきます。

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

リポジトリのローカルバージョンは、多くの場合、リモートリポジトリのバージョンとは異なります。これはGitのコア機能です。準備ができるまで、リモートリポジトリにプッシュせずに、ローカルで変更を加えることができます。

リモートリポジトリからコードをプルすると、Gitはそのリポジトリのコンテンツを取得し、ローカルマシンに保存します。これは、保存するファイルへのすべての変更をコミットした場合にのみ発生する可能性があります。

最初に変更をコミットせずにコードをプルしようとすると、「次のファイルへのローカル変更はマージによって上書きされます」というエラーが表示される場合があります。これは、リモートバージョンのリポジトリでも変更されたファイルを変更した場合にのみ発生します。

シナリオ例

ck-gitというGitリポジトリを改訂してみましょう。まず、このリポジトリのコピーを複製しましょう。

git clone https://github.com/career-karma-tutorials/ck-git

これで、ローカルマシンにリポジトリのコピーができました。このリポジトリには、README.mdという1つのファイルが含まれています。その内容は次のとおりです。

# ck-git

GitHubに移動して、サーバー上のこのファイルを変更します。これで、ファイルに次の内容が含まれます。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

# Career Karma Git

ローカルバージョンのリポジトリは、リモートバージョンのリポジトリのオリジンマスターブランチとは異なります。

私たちのバージョンには、コードをプルしたときにリモートリポジトリにあったコードが含まれています。リモートリポジトリには、README.mdに加えた変更が含まれています。

ここで、ローカルマシンのREADME.mdを変更するとします。

# CK Git

ファイルを変更しました。次に、リモートリポジトリに加えた変更をプルして、ローカルマシンに保存できるようにします。

git pull

このコマンドはエラーを返します:

...
Updating a30b784..ec281fc
error: Your local changes to the following files would be overwritten by merge:
    README.md
Please commit your changes or stash them before you merge.
Aborting

簡潔にするために、このコマンドの応答を短くしました。焦点を当てるべきメッセージは、「次のファイルへのローカル変更はマージによって上書きされる」です。

ソリューション

これで、ファイルのコピーが2つあります。1つはローカルマシンにあり、もう1つはリモートリポジトリにあります。リモートリポジトリからコードをプルするとき、Gitはファイルのどのバージョンを残す必要があるかわかりません。

このエラーを解決するには、コードを隠しておくか、コードをコミットします。

コードをコミットするには、README.mdファイルをコミットに追加し、そのファイルを含むコミットを作成します。

git add README.md
git commit -m "docs: Update README.md"

これにより、ローカルマシンのREADME.mdに加えた変更が、プロジェクトのコミット履歴に追加されます。 Gitは、これらの変更を保持したいことを認識します。

2番目の解決策は、変更を隠しておくことです。これにより、後で表示するために変更を保存できます。 gitstashコマンドを使用してコードを隠しておくことができます。

git stash

このコマンドは、変更をスタッシュに保存します(コードは後で使用するために「スタッシュ」されます)。コードを隠したので、リモートリポジトリからコードを安全にプルできます。

git stash pop

Git stashのコードは、gitstashpopコマンドを実行することで表示できます。これにより、リポジトリにコミットしなかったファイルに加えた変更を確認できます。これは、後でファイルへの変更をコミットすることにした場合、それを実行できることを意味します。

結論

「次のファイルへのローカル変更はマージによって上書きされます」エラーは、リポジトリのローカルバージョンのコンテンツと内容が競合するローカルマシンにリモートリポジトリをプルしようとすると発生します。

このエラーを修正するには、後で使用するために変更を隠しておくか、変更をコミットします。これで、専門家のようにこのエラーを修正するために必要な知識が得られました!


  1. 音楽とローカルファイルをSpotifyにアップロードする方法

    Spotifyは、ほとんどの音楽ファンのニーズを簡単に満たすことができるトラックの膨大なライブラリを誇っています。しかし、あなたの好みがほとんどの人よりも少し折衷的である傾向がある場合、あなたが好む傾向があるあいまいなトラックを見つけることは、プラットフォーム上で保証されないかもしれません。ただし、Spotifyでは独自の音楽を追加してSpotifyプレイリストに含め、Spotifyがサポートするすべてのデバイスで簡単に聴くことができるので心配はいりません。この記事では、ローカルファイルをサービスに提供するプロセスについて説明します。 予備的注意 チュートリアルを開始する前に、いくつかの点を

  2. Android ファイルを Mac に転送できませんか?

    Android デバイスを Mac に接続できない場合の修正方法は次のとおりです。データを転送できませんか? Android ファイル転送が Mac で機能しない?これらの質問を常に自問するなら、あなたは一人ではありません!これは、多くの Mac ユーザーが直面する一般的な問題です。 Google は Android File Transfer という便利なツールを提供して、デバイスとシステム間で写真、動画、ファイルを転送しますが、あまり役に立たない場合があります。心配しないで。この問題を解決できるいくつかの簡単な解決策を試し、蓄積してきました。 すぐに解決策に飛びましょう! ステップ 1:U