LoginSignup
83
91

More than 5 years have passed since last update.

10分で学ぶ初心者の知らないGitコマンド一覧

Posted at

書こうと思ったきっかけ

昨年、社内のSVNレポジトリをGit移行してから、
チームメンバーにGitコマンドについて色々質問をうけました。
そこで、メンバーに教えた便利なコマンドをまとめておきます。

基本的なコマンドは理解している事を前提に書いて行きます。
この記事内ではざっくりと説明していくので、
気になるコマンドがあれば調べてみてください。

git reset

resetは大別して3種類あります。
resetを使いこなすとかなり幸せになれるので、必ず覚えておく事をオススメします。
参考:http://qiita.com/LOUIS_rui/items/8bc0c9058a69a3d6de97

git reset --hard コミットハッシュ

指定したコミットハッシュのindexに一致させるときに使用します。
指定したコミット以降にindexに追加したファイルは削除されます。
気に入らないコミットをいくつかしてしまって削除したいときや、
後述のgit reflogとあわせてよく使います。

git reset --mixed コミットハッシュ

指定したコミットハッシュのindexに一致させるときに使用します。
指定したコミット以降にindexに追加したファイルは未追跡ファイルに残ります。
指定したコミットのindex以降の変更から、
再度コミットに入れるファイルを取捨選択したり、分割してコミットする時に使用します。

git reset --soft コミットハッシュ

指定したコミットハッシュへカレントブランチのHEADのみ移動させます。
指定したコミット以降にindexに追加したファイルはすべてステージに残ります。
複数のコミットを一つにまとめる時やコミットコメントを変更する時に使用します。

git show-branch

複数のブランチのコミット履歴を表形式で一覧できます。
参考:http://qiita.com/t_uda/items/9b6055aa93215cb8bac1

git show-branch --more=n

カレントブランチと他のブランチの基底コミット以前も見たい場合に使用します。

git show-branch -a

リモートブランチを見たい場合に使用します。

git reflog

何かやらかしてしまった時に最後の頼みの綱として使用するコマンドです。
間違えてreset --hardしたり、rebaseを繰り返しているうちに、
意味が分からなくなってしまった場合に使用します。
git reflogで過去のコミットハッシュ一覧が出てくるので、
戻りたい過去のコミットハッシュにgit reset --hard コミットハッシュ とすれば、
いつでも指定した過去に戻る事ができます。
ただ、未コミット分のファイル等は戻らないので注意してください。
参考:http://qiita.com/yaotti/items/e37c707938847aee671b

git checkout

git checkout -B 作成ブランチ名 既存ブランチ名

既存ブランチから新たにブランチを作成する時に使用します。
-bの場合、作成ブランチが、既に存在する場合は使用できませんが、-Bになると既存ブランチで上書き作成できます。

git checkout -

カレントブランチに移る前のブランチに移動したい時に使用します。

git checkout .

カレントディレクトリに含まれる全ての変更を元に戻したい時に使用します。
新しく追加したファイルは消えないので普通にシェルコマンドで消すか、git clean等で消してください。

git checkout コミットハッシュ ファイル

指定したファイルをコミットハッシュで指定した時点の内容に更新します。

git fetch

git fetch --prune

git fetch時にリモートのレポジトリから既に削除されているブランチを、
ローカルレポジトリの追跡ブランチから削除します。

git revert

既に共有のリモートブランチであるmaster等にpushしてしまったコミットを、
なかった事にしたい場合に使用し、変更打ち消しのコミットが発生します。
尚、マージコミットに対してrevertをかける場合は-mをつけます。
参考:http://qiita.com/awakia/items/5fad0c454ddc7b478ff1

git cat-file

git cat-file -p コミットハッシュ:ファイル名

指定したファイルのコミット時点での内容を閲覧したい場合に使用します。

git commit

git commit --amend

一つ前のコミットにマージしてコミットする事ができます。
コミットコメントを間違えたときや、ローカルレポジトリでの開発時に、
「とりあえずコミットしておく」みたいなコミットが増えないように使用します。

git update-index

git update-index --skip-worktree 無視するファイル

.gitignoreで無視できるファイルは未追跡のファイルのみなので、
既にgitに管理されているファイルの更新を無視したい場合はこのコマンドで無視させます。
参考:http://qiita.com/usamik26/items/56d0d3ba7a1300625f92

git update-index --no-skip-worktree 無視を解除したいファイル

skip-worktreeで無視していたファイルを、
やっぱりgitに管理させたい場合はこちらのコマンドを使います。

git grep

git grep 文字列

レポジトリ内の文字列検索をしたい時に使用します。

git grep -E 正規表現

-Eや-Gを使う事で正規表現も使用可能です。

git log

git log --oneline

各コミットログを一行にまとめて、
一画面でなるべく多くのログを表示したい時に使います。

git log --graph

コミットログをグラフ表示してくれます。
--decorate=fullをつける事でブランチ名も表示されます。
--onelineと併用するとさらに見やすくなります。

git log -S

git grepはワークスペース内の文字列検索ですが、
git log -Sの場合は過去のコミットから対象文字列を含むコミットを検索することができます。

git log --name-only

-pを使うと各コミットの変更内容が見れますが、
各コミットの変更ファイルだけを見たい時にこのオプションを使用します。

git log --first-parent

マージコミットのマージ元のコミットログを表示したくない場合に使用します。

git stash

現在の作業を一時的に退避させて、別のブランチに移って作業したい時などに使います。

git stash save 保存名

git stash saveの後に名前をつけておくとどの退避ファイルか分かりやすいです。
参考:http://qiita.com/fukajun/items/41288806e4733cb9c342

git merge

git merge --squash

マージする時に複数のコミットを一つにまとめてマージしたい場合に使用します。

git push

git push :削除するリモートブランチ

リモートブランチを削除する時に使用します。
また、また、git push --delete リモートレポジトリ名 削除するリモートブランチ名 でも削除可能です。

git cherry-pick コミットハッシュ

別のブランチのコミットをカレントブランチに適用したい時に使います。

git tag

git tag --contains コミットハッシュ

指定したコミットハッシュを含むタグを検索します。

git clean

git clean -fdx

Gitで未追跡のファイルとディレクトリを一括削除します。
作業開始してから、色々なファイルを追加、更新したけど
やっぱりなかった事にしたい時にgit reset --hardとあわせてこのコマンドを使用します。

83
91
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
83
91