3
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 5 years have passed since last update.

P&D - Planning and Development -Advent Calendar 2017

Day 25

初心者に役立つgitコマンド

Last updated at Posted at 2017-12-24

P&Dアドベントカレンダー25日目担当seaaaaaaaaaです。

##はじめに
初心者の私がよく使っているGitHubのコマンドを紹介したいと思います!!
(注)私は2年前まで実家にネット環境がなく、PCを全く使ってこなかった人間です。

1. commitの取り消し

今回はresetのやり方について紹介します。
(revertに関しては参考記事の方を参考にしてください)

zsh
% git log


commit xxxxxxxxxxxxxxxxxxxxx //以下ハッシュ値 // 注目
Author: アカウント名 <登録メールアドレス>
Date: Mon Dec 24 17:05:08 2017 +0900

   yyyy //commitした時のメッセージ
zsh
% git reset --hard ハッシュ値

HEAD:戻したいcommitのハッシュ値

操作が終え、以下のようになっていると完了です。

zsh
% git log


commit ハッシュ値 (HEAD -> branch名) // 左の()が追加されている
Author: アカウント名 <登録メールアドレス>
Date: Mon Dec 24 17:05:08 2017 +0900

   yyyy //commitした時のメッセージ

resetrevertの違いって?

resetは「commitを取り消す」という作業になるため、logから確認ができなくなります。
revertは特定のcommitを元に戻すもので、commitが削除されることはありません。
個人的にはlogを開いたときにわかりにくくなったりするのであまり使うことはないですが、
共同開発で他の人が後から見ても確認ができるので、一般的に推奨されているのはrevertのようです。

2. resetで見れなくなったlogも見る

今回はreflogについて紹介します。

zsh
% git reflog

ハッシュ値 HEAD@{num}: コマンド: 動作内容

(例)
de688a4 HEAD@{0}: reset: moving to de688a4fbac0526f8671c

num:Gitを操作した記録が番号順になっている。0が最新。

reflogはHEADが辿ってきた履歴を確認することができます。
つまり、これまでにそのプロジェクトで行なったgitコマンドとその内容を最新のものから順に確認することができます。
なので、上記で述べたresetによる確認できなくなるlogも見ることができます!!!!
ただ、どのcommitにハッシュ値が対応してるかなどはわかりにくくなるので注意です。

(注) reflogは最強ではない!?

addしただけでcommitしてないものがある時に、reset --hardをしてしまうとaddした内容は復元できません。
addすらしてないものももちろん消えます。

最後に

今回は2つのことについてまとめてみました。
開発していく中で役立ったものがあったら、また書いていきます(^0^)
その他、不適切な部分等あればご指摘ください。

参考資料

[git reset (--hard/--soft)]ワーキングツリー、インデックス、HEADを使いこなす方法
【gitコマンド】いまさらのrevert

3
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
3
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?