Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@Jackson123

[Github]意図的にコンフリクトを発生させて対応方法を覚える

はじめに

チーム開発でgitを使うので、いずれ起こるかもしれないコンフリクトに対して適応できるようにします。

手始め

「hoge.txt」ファイルを作成します。中身は以下のようになっています。

hoge.txt
こんにちは

新たなブランチを作成する

git checkout -b [ブランチ名]でブランチの作成と切り替えを同時に行います。

$ git checkout -b second

git branchで現在のブランチを確認できます。

$ git branch
  master
* second

secondでのファイルの編集

hoge.txtに文字を1行追加してコミットします。

hoge.txt
こんにちは
こんばんは
$ git add hoge.txt
$ git commit -am "add こんばんは to hoge.txt"

masterでのファイルの編集

masterブランチに戻ります。

$ git checkout master
Switched to branch 'master'

$ git branch
* master
  second

この時hoge.txtは1行のままです。
secondブランチとは違う文を追加していきます。

hoge.txt
こんにちは
おやすみなさい

そしてコミットします。

$ git add hoge.txt
$ git commit -am "add おやすみなさい to hoge.text"
[master ce42458] add おやすみなさい to hoge.text
 1 file changed, 2 insertions(+), 1 deletion(-)

マージしてコンフリクトを起こす

ここからが本題です。作成したsecondブランチをmasterブランチにマージしてコンフリクトさせます。

$ git merge second
Auto-merging hoge.txt
CONFLICT (content): Merge conflict in hoge.txt
Automatic merge failed; fix conflicts and then commit the result.

はい、これでコンフリクトが発生して「自動マージが失敗しました」と表示されています。

この状態で任意のエディタでファイルを確認すると以下のようになっています。(私の場合はVScodeです)

こんにちは
<<<<<<< HEAD (Current Change)
おやすみなさい
=======
こんばんは
>>>>>>> second (Incoming Change)

この場合「おやすみなさい」がカレントブランチの内容です。
そして「こんばんは」がsecondブランチの内容です。
今回はどちらも残したいので周りの<<<<<<< HEAD=======
>>>>>>> secondを消します。その後コミットを実行します

hoge.txt
こんにちは
おやすみなさい
こんばんは
$ git add hoge.txt
$ git commit -am "merge second"
[master 61e9866] merge second

以上でコンフリクトを解消できました。
マージしてブランチが不要になった場合はgit branch -dを使いましょう。

$ git branch -d second
Deleted branch second (was d8fbc89).

参考

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What is going on with this article?