skillup

技術ブログ

Git

gitのfetch/merge/rebaseについて その2

投稿日:

以前、gitのfetch/mergeについての記事を書きましたが、理論的なことは書いてあっても実際に処理の流れをかいていなかったので、今回はそのことについてメモリます。

競合が起きるとき

gitでは一般的に

  1. (fetch and merge ) or pull
  2. 何らかの改修
  3. add & commit
  4. push

という流れをとりますが、下記のようなケースでは競合が発生します。

Step1 山田さんがAをコミット→プッシュ
Step2 鈴木さんがプル後、Bをコミット→プッシュ
Step3 山田さんはBをプル
Step4 鈴木さんはD、Eをコミット→プッシュ
Step5 山田さんはプルせずにCをコミット

図で書きますと以下のような状態です。

山田さん
A→B→C

鈴木さん
A→B→D→E

リモート
A→B→D→E

この状態でmergeをしますが、同一ファイルに差分がある場合、自動でマージができず下記のようなメッセージが出力されます。こういったファイルの状態ことをコンフリクトが起きているといいます。

コンフリクトの解決

このような場合、自動でmergeが働かないため、エディタでファイルを開き、下記のような競合を解決する必行があります。

vim file3

これはローカルのコミットが上段でfetchで取り込んだリモートのコミットが下段という意味です。

これらを取り除き、下記のようにします。(通常はどちらかに合わせることが一般的でしょう。)

 

このあとgit add & git commit と入力するとこの時点で競合を解消したというメッセージがすでにできています。

以前はNetbeansでやっていたので、この処理をしっかり意識せずやっており、気づいたら解消されていたみたいなケースがあったので気を付けたいところですね。

参考

gitのfetchに関して

gitのfetch/merge/rebaseについて

-Git
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Gitのブランチについて

ちょっといろいろと触っているGitに関して。 前回は作業ディレクトリ、インデックス、コミットについて説明したのですが、今回はブランチについて行います。 Contents1 ブランチとは?2 ブランチに …

no image

Gitでのbranch 新ブランチの作成&リモート反映&別環境反映

gitを使っているとわけのわからないことは多いのですが(爆)、その中の1つがbranch(ブランチ)でしょう。 これも説明をきいてもわからないのですが、自分でそのケースを学習してみればすぐにわかると思 …

no image

gitのfetchに関して

gitでリモートの変更を取り込む場合、大きく分けるとfetchとpullがあります。 両者の違いですが、 fetch=一度、変更を取り込んで、ローカルの変更と相違点を確認できます。確認後mergeを行 …

no image

gulpに関して

gulpに関しての復習と色々と間違っていたところもあるのでまとめ。 ちなみに以前書いた記事は下記 gulpインストールとタスクの実行 Contents1 インストール2 タスクの実行3 npxコマンド …

no image

Gitで差分を見やすく表示する方法

gitの差分確認ですが、デフォルトのコンソールの画面だと下記のようなわかりにくい表示になります。 差分をチェックしたい場合はやはり左右にわけてしっかり見ることができたほうがいいですね。 この実現の仕方 …