前の関連記事:Git(20)Git入門の発展編をEclipse4.6でやる:その2
リベースを必要とするとき
リベースとはコミットグラフでいうとグラフの根元を付け替える操作になります。
トピックブランチと統合ブランチでの運用例【ブランチ】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
リベースを使う状況としてはこの解説がとてもわかりやすかったです。
いままでのチュートリアルで作成してきたhllogitのコミットグラフをみると、47bfea1でブランチを新たに作ると同じ状況を再現できそうです。
リベースする例の準備(根元を付け替えるブランチを作成)
過去のコミットから新たなブランチを作る
Id 47bfea1のコミットの状態をみるにはHistoryビューでこのコミットを選択して右クリック→Open in Commit Viewer。
下のDiffタグをみると差分表示が見れます。
Files欄のhellogit.pyをダブルクリックするとコミット時の内容が見れます。
Historyビューでこのコミットを選択して右クリック→Create Branch。
issue3というブランチを作成してチェックアウトしました。
Historyビューでは他のブランチが表示されなくなっていました。
names = ["Bilbo","Frodo","Aragorn","Leglas","Gandalf"] # print greetings for i in range(0,len(names)): print("Hello, {}".format(names[i])) print("How are you?")hellogit.pyの5行目を追加して保存しました。
Commit Messageを入力してCommitしました。
Resetを取り消す方法
Historyビューでmasterブランチからのコミットグラフを表示させようと思って、issue1をチェックアウトして47bfea1でReset Softしたら今度はissue1のコミットグラフのみ表示されてしまいました。
Git(20)Git入門の発展編をEclipse4.6でやる:その2ではこれを元に戻すのにmasterブランチをissue1にマージしました。
今回はORIG_HEADを使うことにします。
Historyビューの右端にあるView Menuボタンをクリック。
Show→Additional Refsにチェックを入れる。
するとORIG_HEADとFETCH_HEADが表示されるようになります。
ORIG_HEADはissue1ブランチのHEADの位置を表しているので、そこを選択してReset Softとすればissue1のHEADが戻りました。
ORIG_HEADのあるコミットにしかHEADを移動させれないわけではなく、どのコミットには同様にして移動させることができました。
ORIG_HEADは単に直前のHEADの位置を示しているだけでした。
すべてのコミットグラフを表示させる
History ViewのShow All Branches and Tagsボタンをクリックするとすべてのコミットが表示されます。
issue3のブランチが47bfea1のコミットで3分岐しているところにつながっていることがわかります。
リベースを使ってissue3のブランチが11d9cf8から分岐するように変更します。
リベースでブランチの起始部を移動させる
11d9cf8のコミットから分岐させたいので、masterブランチをチェックアウトして11d9cf8のコミットで、Reset Softしました。
issue3ブランチをチェックアウトします。
Git Repositoriesビューでmasterブランチを右クリック→Rebase on。
コンフリクトが発生したので解消が必要です。
Start Merge Tool to resolve conflictsを選択した状態でOK。
Merge Toolが起動しましたが、hellogit.pyを直接編集することにします。
names = ["Bilbo","Frodo","Aragorn","Leglas","Gandalf","Boromir","Faramir"] # print greetings to the fine folks in the Middle Earth for name in names: print("Hello, {}".format(name)) print("How are you?")1行目と2行目はmasterブランチの内容を採用し、5行目はissue3ブランチの内容を採用しました。
編集が終わったらhellogit.pyを保存します。
Git Stagingビューでhellogit.pyをStaged Chagesに移動させます。
Commitボタンではなく、Continueボタンをクリックします。
これで狙ったとおりissue3のブランチの起始部が47bfea1から11d9cf8に変更になりました。
masterブランチをチェックアウトしてfbf31d9のコミットを選択してReset SoftとすればmasterブランチのHEADが元に戻ります。
ORIG_HEADは表示させておいたほうが、間違えた時の修正には便利ですね。
これでチュートリアル1は完了です。
残りのチュートリアルは実際にプロジェクトをやりながら必要がでてきたらやろうと思います。
参考にしたサイト
トピックブランチと統合ブランチでの運用例【ブランチ】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
リベースを必要とする状況の例がわかりやすく解説されています。
7. rebaseでマージする【チュートリアル1 ブランチを使ってみよう】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
今回のこのチュートリアルをやりました。
0 件のコメント:
コメントを投稿