Git(28)EclipseのPullでCheckout conflictがでたときのマイルール

ラベル: , ,
Git(26)EclipseのGit Flowの運用方法をやっていて、Featureブランチをリモートブランチからプルする前にローカルブランチを編集してしまってからプルしようとするとCheckout conflictがおきることがあります。その対処のマイルールです。

前の関連記事:Git(27)EclipseでローカルリポジトリをGitHubのリモートリポジトリにするまで


変更をコミットする前にプルするとCheckout conflictがでる


Checkout conflictは変更をコミットする前にプル、つまりリモートブランチをマージしようとするとでてくる警告です。


これらのファイルはPythonスクリプトから出力して更新したものなので、コミットする必要がありません。

ここでコミットしてからプルするとなると、それぞれのファイルのコンフリクトを治さないといけないのでもうこれらの変更は破棄することにします。


Git Repositoriesビューでローカルリポジトリを右クリック→Stashes→Stash Changes。


Stashに適当な名前をつけてOKします。

これでコミットされていないものはなくなりますのでプルできるようになりました。


StashはGit RepositoriesビューのStashed Commitsで確認できます。

不要であれば削除するstashを右クリック→Delete Stashed Commitで削除できます。

PullしたあとにApply Stashed ChangesしてもCheckout conflictがでてきます。

コンフリクトマークを消さないとFeatureブランチをFinishできない



StashをApply Stashed ChangesをしたらPyDev Package Explorerにコンフリクトを示す赤いマークがつきました。


気にかけずにそのまま編集してその編集をコミットはできましたが、Finish Featureしようとするとコンフリクトがあるのでチェックアウトできないと言われます。

原因は先ほどの赤いマークかと思うのでこれを消してみます。

Git RepositoriesでFinishできないFeatureブランチを右クリック→Synchronize with Workspace。


Team Synchronizingパースペクティブに関連付けるか聞いてきますのでYesをクリック。


Synchronizeビューでは赤いマークがついたファイルだけが表示されています。

表示されているファイルを右クリック→Mark as Merged。

すべてのファイルについて同様にして赤いマークをすべて消します。

これでコミットをするとFinish Featureできるようになりました。

しかし結局マスターブランチともコンフリクトしてなかなか修正困難です。

結局修正できずリポジトリを作り直しました、、、

参考にしたサイト


Checkout Conflicts 時の対応 | hacknote
Checkout Conflictsは編集部分をコミットせずに他のブランチに切り替えるときにもでてくるようです。

EclipseでGitを使う(5)競合を解消する。 | TECH Projin
コンフリクトマークの消し方。

次の関連記事:Git(29)EclipseのMerge Toolでコンフリクトを修正する

PR

0 件のコメント:

コメントを投稿