件名の通りのことをやってみたい時のお話
ついでに他の人が作業中のfeature brancheに更新を加えたから自分のEclipseのワークスペースに反映したいなんて時の対応も記載。
前提
- eclipseの状態
- こんな感じでローカルはdev1_f2というfeature brancheで作業している。
- まだインデックスに登録していないConsts.javaっていう更新ファイルがあるとします。
- GigHubの状態
汚いけどこんな状態。別の人が作業していたdev1_f3で作業したいみたいなケースを想定しています。
やり方
①とりあえずこんな感じでアップストリームからフェッチ を選びます
さらに、Gitリポジトリー上のリモートトラッキングにもorigin/dev1_f3が追加されているのが確認できる。
これ何をしたかというとその名前の通りアップストリーム(=リモートリポジトリのはず)からfetchをしたってことのはず。
猿でもわかる~さんの言葉を借りるなら「fetchを実行すると、リモートリポジトリの最新の履歴の取得だけをした状態」。
まあ、リモートの各ブランチの最新状態を取ってきたけどローカルにマージされたわけではないみたいな状態かなあ。
②dev1_f3ブランチへの切り替え
こんなふうにして新規ブランチを選択。
なおすでにローカルに存在するブランチに変えるなら新規ブランチじゃなくてその下にある既に作成済みのブランチを選ぼう。
戻ってくるとこんな感じ。
とりあえずチェックがいっぱい入ってるがよくわからないのでそのままにしておいて完了をおす・・・
これはそれまでの作業中だったdev1_f2で編集していたConsts.javaってファイルがまだコミットされてないからこのままチェックアウトすると消されちゃうよっていう警告。
とりあえずConsts.javaの編集は活かしたいけど今は早くチェックアウトしたいんじゃーって人はスタッシュを選ぶとファイルを避難できる。あとでdev1_f2に戻ってくればConsts.javaの編集は元通り。
なお、dev1_f2に戻ってきたいときは先程の「切り替え」を使おう。
とりあえずコミットしてからにするかって人はコミットを選べばいい。
今回はスタッシュします。
最終的には以下のようにdev1_f3になっているのが分かると思う。
③他の人が作業中のfeature brancheに更新を加えたので、自分のワークスペースに反映したい時。
例として今回は他の人がリモートのdev1_f3にhoge2.txtというファイルを置いたとします。
と言ってもやることは簡単。またアップストリームからフェッチを選ぶ
こんなのが出る。今回はリモートのdev1_f3とマージしたいからこれを選ぶ。
マージオプションとか高速フォワードオプションはよくわからないです・・・(のでデフォルト)
そうするとこんな感じでワークスペースでもhoge2が見えるようになる
まあこれでコンフリクトが発生しなければだいたいのことは出来るのではないかなあと。
そのうちコンフリクトの解消法も書きますかね。