Gitはチーム開発をする上でとても有用なツールですが、その機能の豊富さゆえ苦労されている方も多いのではないでしょうか。今回はGit運用中にありがちな失敗を乗り越えるためのコマンドを、ピンポイントで紹介します。

どのブランチをマージしたか分からなくなった!

 ブランチが増えてくると、どのブランチをどこにマージしたのかが分からなくなってしまうことがあります。 そんなときは次のコマンドを打ってみましょう。

git branch --merged develop

 上記のコマンドを打つと、developブランチにマージ済みのブランチをすべて表示します。

 ブランチをすでに削除してしまった場合は、以下のコマンドを打ちましょう。

git branch --contains f83jaz03

 上記のコマンドは、コミット f83jaz03 を含むブランチをすべて表示します。

共有ブランチに間違ったコミットをプッシュしてしまった!

 機能開発用ブランチを作成してプッシュするはずが、分岐元のブランチに直接プッシュしてしまうという失敗もよくあります。すみやかに次の手順で復旧させましょう。

  1. 間違ってプッシュしたことをチームに周知する 他のメンバーが間違ったコミットを pull してしまうのを防ぐためにも、ちゃんと周知します。

  2. 元ブランチに対して revert を行う revert は、間違ったコミットを取り消すようなコミットを新たに作成するためのコマンドです。(コミット履歴自体を取り消すコマンドではありません) これにより、共有しているコミット履歴の整合性を保ったまま、安全に元の状態に戻すことができます。

git revert <元ブランチ>
  1. 元ブランチをプッシュする ブランチの状態を元に戻したら、忘れずに push します。

もっと手っ取り早く戻したい場合

 極少人数で開発している場合など、手っ取り早くブランチの状態を戻したい場合もあるかと思います。 そんな時はチームメンバーの誰かに頼んで、元のブランチを強制プッシュしてもらうという方法もあります。

(元の状態の develop ブランチを持っているチームメンバーのマシンで)

git push -f develop

この後 develop ブランチをプルすれば、ローカルの develop ブランチが誤プッシュ前の状態に戻ります。 ただ、この方法を不用意に使うと、チーム内で混乱が起きる場合があります。使用には細心の注意を払いましょう。

マージ、リベースに失敗した!

 これらのコマンドはブランチが指し示すコミット位置を変更してしまうため、元の状態を見失いやすい操作です。 特にリベースやfast-forwardのマージを元に戻したい場合、下記のコマンドが有効です。

git reset ORIG_HEAD

ORIG_HEAD はマージ、リベースをする前のブランチの位置を指しています。 注意として、このコマンドが有効なのはマージやリベース操作を行った直後のみです。一度でもコミットを行ってしまうと、このコマンドでは戻すことができなくなってしまいます。

おわりに

 Gitは知っておくと便利な機能がたくさんあります。この機会に本格的に勉強してみてはいかがでしょうか。