4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Git】チーム開発における使用頻度の低い必須知識をまとめる

Last updated at Posted at 2022-06-15

はじめに

現在Git(GitHub)をガンガン触っていく案件にアサインされたのですが、その中でもたまにしか使わない必須知識がいくつかあったので紹介します。

主に自分の振り返り用に書いているので、色々端折ってますがご了承ください。

git log

■使用タイミング
・ローカルリポジトリのコミット履歴を振り返りたいとき

自分自身git logコマンドの有能なオプションは把握しきれていないのですが、ローカルリポジトリのコミット履歴を追いたい場合は下記コマンドが有効です(他に有能なオプション発見次第追記します)。

$ git log --oneline --graph

git reset

■使用タイミング
・リモートリポジトリに誤ってpushしたときに取り消す
・コミット履歴を残さず、前のコミットに戻りたいとき

■使用例
image.png

上記のように、あなたは間違って重要なリモートブランチにpushしてしまったとします。

$ git reset --hard HEAD^
$ git push -f

しかし上記を行ってGitHubを見てみると最新のコミット履歴が無くなります。

git revert

■使用タイミング
・誤ってリモートリポジトリのプルリクを打ち消したいとき
・コミット履歴を残したまま、前のコミットに戻りたいとき

■使用例
git revertではgit pushと違い、以前のコミット履歴を打ち消すコミットを作成してリモートリポジトリにpushすることでpush履歴を残したまま以前のコミットに戻ることができます。

$ git revert "直前コミット"
$ git push

image.png
image.png

そして他にもマージの取り消しも行えます。

# ブランチを新規で作成する
$ git revert -m 1 "取り消したいマージコミット"
$ git push
# 上記ブランチをプルリク
# 元に戻る!!

image.png

image.png

めちゃ簡単ですよね。

一応、「git reset --hard HEAD^」→「git push -f」のコンボでマージ前のコミットに戻ることは可能ですが、masterブランチにて作業する必要があるの(コミット履歴も残らない)と、別ブランチを切る場合はプルリク出せなくなるので実務ではgit revert一択だと思います。

git mergeとgit rebaseについて

git mergeするとコミット履歴は以下となる。
image.png

しかし、git rebaseするとコミット履歴は以下となる。
image.png
扱いが難しくリモートにpush済みの場合は、使用に向いていないらしく中級者向けと言えます。

git squash

下記のように微修正コミットが複数ある場合に、
image.png

$ git rebase -i "まとめたいコミットより1つ前のコミット"
# viにてコミットをまとめて、コメントを修正する

を行うと、下記のようにすっきりします。
image.png

まとめ

git難しいけど面白い!!
適宜ノウハウを更新します。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?