2014年9月26日金曜日

msysGit 競合した場合の措置

まず、適当に

 taroフォルダを作成、そこにgittext.txtを作成し、中身は
image
とした。

image
ここgit Init Hereする。

git GUIを呼び出して、
image
コミットして登録する。

リモートリポジトリを作成、taroの兄弟で、REPO、taro.gitを作ってそこを共有させるためのgitリポジトリとする。

taroでgit GUIを呼んで、リモート、追加、REPO/taroを作って、書込んで初期化してやる。

この状態は、、、

GIT_TEST
                    taro
                                 gittext.txt
                                 .git   (ローカルリポジトリ)
     REPO
                                 taro
                                            .git(共有リポジトリ)

ここで、新しい環境、hanakoをREPO/taroから作成する。

imageで作成する。

GIT_TEST
                    taro
                                 gittext.txt
                                 .git   (ローカルリポジトリ)
     REPO
                                 taro
                                            .git(共有リポジトリ)
                   hanako
                                 gittext.txt
                                 .git   (ローカルリポジトリ)

現時点ではhanakoのgittext.txtとtaroのgittext.txtは同じです。

それぞれのgittext.txtを別々に編集します。

hanakoが先に共有リポジトリに登録。Push、OK

taroが次に登録しようとすると、、、、

Pushing to ../REPO/taro
To ../REPO/taro
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '../REPO/taro'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

というエラーが出る。まず、fetchしてマージしなさいということ。

メニューのリモート、取得元、REPOを選択して、fetchする。

REPOから新しい変更をフェッチしています。というメッセージで緑色のベルトで成功と出た。

マージ、ローカルマージ、トラッキングブランチを選択して、マージを押す。

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

ま、失敗したというわけ、で、画面は
image
エラーになってる。コンフリクトを解決するには、gittest.txtを開いて、テキストを修正する。例えば
image
<<<<<と======と>>>>>を外した。

このままgit GUIで何をやっても前に進めなくなるので、

git GUIは閉じて、

フォルダをエクスプローラで開いて、右クリックして

git Add all file nowを選択する。(競合を解決したと解釈)

同じく、gitGUIを開くと、、、、あらま不思議、gittest.txtがステージングされているじゃありませんか。

このまま、コミットします。git Histroyで状態を見ます。

image

正しくMergeされていますね。競合したのでマージコミットが
入りました。

このままでは意味がありません。pushしておいてください。

hanakoでもfetchとマージを行って最新状態にしておいてください。

これを書いた理由は、、、、
   競合を解決した後のマージの継続方法を知りたかったのです。どのように解決するかを覚えておきたかったからです。正しいファイルに更新した後に、エクスプローラーの Add all file ですね。その後、git GUIを呼び出して、コミット、Pushするということで。

有り難うございました。

0 件のコメント:

コメントを投稿