Gitコマンドでよく使うもの一覧【GitHub】

 久々の投稿になります。

本ブログで紹介しているAIなどのpythonプログラムは、GitHubで公開していますが、仕事でもGitHubを頻繁に使うことが多くなりました。

GUIツールではなく、コマンドプロンプトでGitコマンドを使って操作しているのですが、つい忘れたり、よく理解できていなかったコマンドが結構あるので、備忘録として記しておきたいと思います。

よく使うGitコマンド一覧

[クローン]
git clone リモートリポジトリURL

[差分確認]
git diff
git diff --stat
git status

[インデックス登録]
git add .
git add -A

[コミット]
git commit -m "〇〇〇"

[プッシュ]
git push origin main(master)
※デフォルトブランチ名がmaster⇒mainに変更されました。以下同様。

[プル]
git pull origin main(master)

[チェックアウト]
git checkout ファイル名

[リセット]
git fetch origin main(master)
git reset --hard origin/main(master)

[ログ]
git log

クローン

GitHubでソースコード管理を始めるときは、いくつか方法があるとは思いますが、自分はまず以下の作業から入っています。

・GitHubサイトでリポジトリをつくる
・作ったリモートリポジトリURLをコピー
・ローカルPC側の適当なディレクトリ配下で以下を実行

git clone リモートリポジトリURL

これでローカルリポジトリのディレクトリが作成されます。以降はここを作業場所とし、ソースコードの作成・編集・削除などを行います。

差分確認

ワークツリー(ローカルリポジトリのディレクトリ内)にあるファイルの変更点を確認したいときは、以下のコマンドをよく使います。

git diff
git diff --stat
git status

git diff は変更のあったファイル名と変更内容が示されます。変更内容の表記の意味については以下の通りです。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
--- a/file_a.txt  # 変更前ファイル名

+++ b/file_b.txt # 変更後のファイル名

@@ -m,n +o,p @@
# m: diff表示開始の行, n: 変更hunk(まとまり)の数  ← (変更前ファイル)
# o:  diff表示開始の行, n: 変更hunk(まとまり)の数  ← (変更後ファイル)

+ # 追加した行
- # 削除された行
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

git diff --stat は変更のあった、ファイル名の一覧をパッとみたいときに使います。以下のような感じで出力されます。

ーーーーーーーーーーーーーーーーーーー
01-file.py |   8 +-
02-file.py           |   4 +-
ーーーーーーーーーーーーーーーーーーー

ファイル名一覧の横に、追加・削除された行数の合計が示されます。最後+-が並んでいますが、これはよく分かっていません。おそらく追加・削除箇所のhunk(ある程度のまとまり)の数だけ、+と-が並んでいるのかなと。

git status はgit diff とは異なり、変更のあったファイルだけでなく、新規に追加されている(インデックス登録されていない)ファイルも表示してくれます。とにかく、ディレクトリ内で何が変わったのかを確認したいときに使えます。

インデックス登録

ワークツリー(ローカルリポジトリのディレクトリ配下)で作業を行った後は、インデックス登録をまずは行うと思います。大体以下の2つのコマンドをよく使いますね。

git add .

カレントディレクトリ配下のファイル変更すべてを、インデックス登録します。ファイルの追加・変更・削除操作すべてが対象です。

git add -A

ワークツリーで行った全ての変更をインデックス登録します。ファイルの追加・変更・削除操作すべてが対象です。

コミット

インデックス登録を行った後は、ローカルリポジトリにコミットして、作業内容を記録します。いつも以下のコマンドで実行しています。

git commit -m "〇〇〇"

コミットを行います。その際にコメントを -mの後に "〇〇〇"と付記して実行します。コメントは、行った変更の概要などを書きます。

プッシュ

インデックス登録⇒コミットと来て、最後にリモートリポジトリにローカルリポジトリの変更内容をアップロードします。

git push origin main(master)

引数の意味ですが、originはリモートリポジトリURL、mainはmainブランチを差しています。以前はmasterブランチという名称でしたが変更になったようです。

プル

プッシュとは逆に、リモートリポジトリのデータをローカルリポジトリにダウンロードするときには、以下のプルコマンドを実行します。

git pull origin main(master)

チェックアウト

ワークツリー上で変更したファイルを元に戻したいときは、以下のチェックアウトコマンドで可能です。

git checkout ファイル名

checkoutはブランチを切り替えたり、特定のコミット時点の状態にワークツリーを戻したい時に本来使うものですが、この使い方も便利で使用機会が多いかなと。

リセット

ワークツリーをリモートリポジトリの内容に、強制的に合わせたいときは、以下のコマンドで可能です。

git fetch origin main(master)
git reset --hard origin/main(master)

fetchコマンドは、リモートリポジトリの情報を取得するだけで、ワークツリー内のファイル自体は変更しません。
resetコマンドはその名の通り、ワークツリーの状態をリセットしますが、ここではfetchで取得したリモートリポジトリのmainブランチの内容に合わせるというものです。origin/mainというのは正確には、リモートリポジトリのmainではなく「ローカルにダウンロードしてきた」リモートリポジトリのmainブランチを差します。

ログ

コミットの履歴を確認する際は、以下で確認できます。

git log

一番上に最新のコミットが表示され、下にいくほど古いコミットが表示されます。

スポンサーリンク