前の関連記事:Git(19)Git入門の発展編をEclipse4.6でやる:その1
違うPCでリポジトリを復元する準備を整える
HEADを先に進める
家のPCでリポジトリの状態をみてみると、masterブランチの先頭がなぜか、96118ebにありました。
たぶんここでチェックアウトした?、、、のではなさそうです。
操作の履歴をみるにはGit Reflogビューを見ます。
updating HEADというのはどういう操作をした結果なのか、わかりませんね。
記憶をたどると、resetの機能を調べようとコミットをリセットしまくっていたような気がします。
リモートリポジトリのorigin/masterはちゃんとコミット履歴を保っているので、まずこれとmasterブランチをマージすることにしました。
Git Repositoriesビューでmasterをチェックアウトした状態で、origin/masterを選択して右クリック→Merge。
Checkout Conflictsがでてきて、hellogit.pyにコミットしてない変更があって、このまま操作を続けるとその変更が失われてしまうと言われます。
前回の投稿にでてきたCheckout Conflictsのダイアログと比べると、Reset、Commit、Stashのボタンの順番が違うのは何か意味があるのでしょうか。
お勧め順?お勧めではない順?
そもそもOKにするとどうなるのでしょう?、、、これはキャンセルになるようです。
Stash | 逆引きGit | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
Stashが何か調べてみると、「現在の作業を一時的に退避したい」ときに使うものなので、まさにいまの状況にぴったりです。
Stashボタンをクリックすると、Stash用のコミットメッセージの入力を求められます。
メッセージを入力してOK。
これでMergeされると思ったらStashしただけで、Mergeはされませんでした。
なのでもう一度origin/masterを右クリック→Merge。
今度はFast-forwardでマージされました。
masterブランチがちゃんと11d9cf8に戻ってきました。
Stashを活用する
StashしたコミットはGit RepositoriesビューのStashed Commitsに表示が出てきます。
stash@{0}を右クリック→Open in Commit Veiwer、とするとStashed Commitの内容を見れます。
Staged Changesにあるhellogit.pyをダブルクリックするとその内容が確認できます。
stash@{0}を右クリック→Apply Stashed Changesを選択すると、現在のWorking TreeのファイルにStashed Commitの内容が展開されます。
Conflictしていると言われます。
マージでコンフリクトしたときと同じ対応でよさそうですね。
stash@{0}を右クリック→Delete Stashed Commit、でStashed Commitを削除できます。
もとのmasterブランチの内容に戻したいので、前回の投稿と同様にして一旦origin/masterをチェックアウトしてみましたが、これはうまくいきませんでした。
Working Treeは何も変化しません。
うーん、やり方がわからないのでとりあえずコミットしてから、元のコミットでHard Resetしました。
リモートブランチをローカルブランチにもってくる
ようやくリモートブランチのフェッチです。
Git Repositoriesビューでhellogitを右クリック→Fetch from Upstream。
origin/masterブランチを右クリック→Merge。
Fast-forwardでマージできました。
表示が更新されていないときはRefreshボタンをクリックします。
で、origin/issue1ブランチはどうやってローカルリポジトリにもってくるのでしょう?
origin/issue1を右クリック→Checkout。
Checkout as New Local Branch。
Merge upstream commits into local branchを選択してFinish。
これでうまくいきました。
参考にしたサイト
Stash | 逆引きGit | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
Stashのコマンド一覧。
0 件のコメント:
コメントを投稿