起きた問題
- Gitでコンフリクトしていた際にファイルを削除しようとしたが残ってしまった
コンフリクトが起きるまでの状況
以下のように問題を再現してみました。
流れとしては、
- developブランチから切ったdelete_aaa_branchブランチでaaa.txtを消してdevelopへマージ
- add_bbb_branchブランチで別の作業(ここではbbb.txtを追加)をして、developブランチへマージしようとしている。ただ、この時、aaa.txtを間違えて修正してしまっている
$ mkdir temp20220625
$ cd temp20220625
$ git init
$ git checkout -b develop
$ echo aaa_content > aaa.txt
$ git add aaa.txt
$ git commit -m "aaa.txtを追加"
$ git branch delete_aaa_branch
$ git branch add_bbb_branch
$ git checkout delete_aaa_branch
$ rm aaa.txt
$ git add aaa.txt
$ git commit -m "aaa.txtを削除"
$ git checkout develop
$ git merge delete_aaa_branch
$ git checkout add_bbb_branch
$ echo bbb_content > bbb.txt
$ echo "\n" >> aaa.txt # ここでミスってaaa.txtに改行をいれてしまうとする。Ideaの操作でやってしまう。
$ git add *
$ git commit -m "bbb.txtを追加"
$ git checkout develop
$ git merge add_bbb_branch #ここでコンフリクトする
その結果、以下のようになります。
$ git merge add_bbb_branch #ここでコンフリクトする
CONFLICT (modify/delete): aaa.txt deleted in HEAD and modified in add_bbb_branch. Version add_bbb_branch of aaa.txt left in tree.
Automatic merge failed; fix conflicts and then commit the result.
$ git status
On branch develop
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Changes to be committed:
new file: bbb.txt
Unmerged paths:
(use "git add/rm <file>..." as appropriate to mark resolution)
deleted by us: aaa.txt
そして、この際、コードを修正するメンバは皆aaa.txtを削除することに関しては同意しているとします。
間違って操作した箇所
上記の状況で、私は、「aaa.txtを削除したい。以下のように書いてある」
(use "git add/rm <file>..." as appropriate to mark resolution)
deleted by us: aaa.txt
「【aaa.txtがdeletedされたこと】をaddするので git add aaa.txt だ」と考えました。
その結果、
$ git add aaa.txt
$ git commit
[develop 48f60eb] Merge branch 'add_bbb_branch' into develop
$ ls
aaa.txt bbb.txt
なんと、、aaa.txtが残ってますね。。
わかったこと
上の状況で、「【aaa.txtがdeletedされたこと】をaddするので git add aaa.txt だ」という考えが間違っていました。
ここでは正解は、
git rm aaa.txt
でした。
わからないこと
git rmはgitの管理から外すみたいな説明がありますが。ここでなぜそれをするのかわかっていないです。
(use "git add/rm <file>..." as appropriate to mark resolution)
deleted by us: aaa.txt
というフレーズを読んでどういうふうに考えて、git rmするのか。。