久々の投稿になります。
本ブログで紹介している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 +-
ーーーーーーーーーーーーーーーーーーー
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
一番上に最新のコミットが表示され、下にいくほど古いコミットが表示されます。