3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

gitコンフリクト解消【意味を理解する】

Last updated at Posted at 2018-05-27

gitでよく起こるコンフリクト、そしてそのコンフリクトを解消する手法ですが、裏で何が起こっているのかよく理解していなかったので、備忘録の為に残しておきます

#コンフリクト解消の順番

1.Fetch
2.masterを現在のブランチにマージ
3.競合箇所の修正
4.add-commit-push
5.リモートであるGituhbでマージする

#それぞれで起こっていること

##1.Fetch
github上でのmasterの更新をローカルに持ってくること。
自分がローカルのブランチを更新している間に、Githubのmasterはどんどん進んでいます。
そもそも競合というのはブランチがmasterでどのような更新が行われているのかを知らず、全くお互い(masterとブランチ)がお互いを知らないから起こることです。
なので、まずは自分のブランチに現状の更新を教えてあげます。そのためにGithubのmasterから情報を取ってくる必要があります。それがFetchです。ちなみにDBを扱う時にも利用される用語なので知っておいて損はないです。

##2.masterを現在のブランチにマージ
上でも書いてありますが、ブランチにmasterの更新を教えてあげる必要があります。教えてあげる行為がマージになります。
自分が対象ブランチにいるときに、masterを対象ブランチにマージします。

##3.競合箇所の修正
もちろんすでに競合しているので、ここで修正が必要になります。競合部分を実際のコードで修正していきます。
競合箇所を全て消すのか、両方残すのか、決して二者択一ではありません。

##4.add-commit-push
修正し終わったら、コミット対象にし(add)、コミット、そしてリモートにpushします。
こうすればリモートにあるブランチもローカルと同じようにmasterのコードを知っており、かつマージできる状態にあります。

##5.リモートであるGithubでマージする
リモートでマージします。これで競合は解決します。

#コマンドでもgitはいじれた方がいい
sourcetreeとか非常に便利です。自分も利用中です。
他のエンジニアとコミュニケーションする時に、addとかfetchとかgitコマンドの用語は使うので、自分が今行っている行為がコマンドでいうなんなのかは常に理解しておいたほうが良いかと。。。

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?