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

gulpに関して

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

no image

Gitデタッチ、インデックス、プッシュなど

まとまってませんが、Gitであったトラブルについてのメモです。 Contents1 デタッチ状態2 インデックス一覧&削除2.1 インデックスの一覧2.2 インデックスから取り除くとき3 git pu …

no image

ブランチ構成について

gitのブランチ構成などについて少しまとめてみようと思います。 Contents1 ブランチ一覧1.1 feature1.2 develop1.3 staging1.4 production2 ブラン …

no image

Gitの活用に関して

今回はgitの技術的なことではなく、主に運用に関して。超基礎的なことですが、チームで開発する場合にはルールを徹底してないと混乱をきたします。 Contents1 ブランチを追加機能ごとにきる2 バグに …

no image

追跡ブランチからローカルブランチを作る方法~ (svn→gitの移行など)

SVNで運用されていたプロジェクトをgitに移行する機会があったのでその時のメモなどを。 思ってたよりは楽だったかな・・・ Contents1 準備2 実際の移行(git svn clone)3 gi …

アーカイブ