[解決済み] git が「Pull is not possible because you have unmerged files」と表示するのはなぜですか?
質問内容
ターミナルでプロジェクトのディレクトリを引き込もうとすると、次のようなエラーが表示されます。
harsukh@harsukh-desktop:~/Sites/branch1$ git pull origin master
U app/config/app.php
U app/config/database.php
U app/routes.php
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
なぜgitは
"Pull is not possible because you have unmerged files"
また、それを解決するにはどうしたらよいですか?
どのように解決するのですか?
現在起きていることは、あるファイル群があり、以前にマージを試みたが、マージの競合が発生したことです。
理想的には、もしマージの衝突が起きたら、それを手動で解決し、変更をコミットするには
git add file.name && git commit -m "removed merge conflicts"
.
さて、他のユーザーが自分のリポジトリで問題のファイルを更新し、その変更を共通のアップストリームリポジトリにプッシュしました。
たまたま、(おそらく) 前回のコミットでのマージの競合が解決されていなかったため、ファイルが正しくマージされず、その結果
U
(
unmerged
)フラグをファイルに設定します。
ですから、今、あなたが
git pull
これは、ファイルのバージョンが正しく解決されていないためです。
これを解決するには、問題のマージの競合を解決し、変更を追加してコミットする前に
git pull
.
問題の再現例と解決方法。
# Note: commands below in format `CUURENT_WORKING_DIRECTORY $ command params`
Desktop $ cd test
まず、リポジトリの構造を作成します。
test $ mkdir repo && cd repo && git init && touch file && git add file && git commit -m "msg"
repo $ cd .. && git clone repo repo_clone && cd repo_clone
repo_clone $ echo "text2" >> file && git add file && git commit -m "msg" && cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
今、私たちはrepo_cloneで、もしあなたが
git pull
コンフリクトを発生させる
repo_clone $ git pull origin master
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /home/anshulgoyal/Desktop/test/test/repo
* branch master -> FETCH_HEAD
24d5b2e..1a1aa70 master -> origin/master
Auto-merging file
CONFLICT (content): Merge conflict in file
Automatic merge failed; fix conflicts and then commit the result.
クローンでのコンフリクトを無視して、元のレポで今より多くのコミットを行った場合。
repo_clone $ cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
そして、その後に
git pull
となります。
repo_clone $ git pull
U file
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
ただし
file
はマージされていない状態であり、もし
git status
ということです。
repo_clone $ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
(use "git pull" to merge the remote branch into yours)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: file
そこで、これを解決するために、まず、先ほど無視したマージの競合を解決する必要があります。
repo_clone $ vi file
に設定し、その内容を
text2
text1
text1
を追加し、変更をコミットします。
repo_clone $ git add file && git commit -m "resolved merge conflicts"
[master 39c3ba1] resolved merge conflicts
関連
-
[解決済み】マージが終了していない(MERGE_HEADが存在する)。
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
git push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
[解決済み] 複数のコミットをチェリーピックする方法
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] Gitで変更された複数のファイルのうち、1つのファイルだけを隠す?
-
[解決済み] 既にディスクから削除された複数のファイルを Git リポジトリから削除する
-
[解決済み] gitです。あなたのブランチはXコミット分進んでいます
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】Git マージエラー "マージされていないファイルがあるためコミットできません" について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] git rebase fatal: 必要なリビジョンは1つです。
-
[解決済み】GitHubで空のブランチを作成する
-
gitコミット発生 ! [リモート拒否] master -> master (pre-receive hook declined) 解決策
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み] GIT_DISCOVERY_ACROSS_FILESYSTEM が設定されていない。
-
[解決済み] Git エラー : 'upstream' は git リポジトリでないようです。
-
[解決済み] 警告: リモート HEAD は存在しない参照元を参照しているため、チェックアウトできません。
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] GitHubです。パーミッションが拒否されました (公開鍵)。
-
[解決済み] Git作者不明