Git コミット ブランチ 間違えた みたいな話。
◆事象
developブランチからfeatureブランチを切ったんで、作業してはローカルのfeatureにコミットをしていた。
していたつもりだったんだけど
ローカルのdevelopブランチにコミットしていた!Wow!
「誰かに土下座しようかしら」という考えが頭をよぎりつつ、「ありがちなミスだし解決する方法はLinusくんが用意してくれてるだろ」と思った。実際あった。誰が実装したのかは知らんがサンキューです。
2018/11/15追記
よく考えたら、devをfeatureに向けてマージすりゃよかったのかと思った。けど、この記事は残しておく。
◆cherry-pick
どうやらcherry-pickというコマンドを使用すればよいらしい。
冗談はさておき、cherry-pickコマンドは「コミット(の変更)をブランチからブランチへコピーする」的な機能であった。俺の理解では。
んで、今回の問題である「ブランチ間違いコミット」について、以下の作業をすればよかろうと算段した。
- developに対してやらかしたコミットをfeatureへとcherry-pick
- developのローカルブランチを削除(わりとあやうい)
そして
- developをリモートからフェッチ
- developからfeatureへマージ
- featureをプッシュ
- developへプルリク
してしまってミッションコンプリートよ。勝ったな。
◆UIとバトる
すりゃいいことは分かったんだけど、Visual Studioをどう操作したもんかわからん。そもそもUIでcherry-pickをサポートしているかもわからない。
ググった結果、UIで可能だらしいんだが、何をすりゃいいのか解り辛い。要領を得ない。
◆最終的にどうすりゃよかったのか
- チームエクスプローラーの「ブランチ」で、featureブランチをダブルクリックしてチェックアウト
- developブランチを右クリックし、「履歴の表示」をクリック
- コピーしたいコミットを右クリックし、「チェリーピック」をクリック
※古いコミットから順にやったほうがいいんじゃないだろうか(提案) - コンフリクトしたら頑張ってマージ
取り敢えず俺のやりたかったことは上記の操作でできた。
◆結論
GitとVisual StudioとAzure DevOpsの連携がエロすぎる。
コメントを残す