komoto / エンジニアブログ

プログラミングについてアウトプットします。

【Git】個人開発でよく使うGitコマンド

個人的によく使うGitコマンドをまとめてみました。

git init

ディレクトリをGit管理下に置くコマンドです。
これで、git関連ファイルが作成され、Gitを使ってディレクトリのバージョン管理ができるようになります。

git status

git管理下にあるディレクトリの変更箇所を一覧で見ることできます。
ステージング前のファイルでの変更箇所を見たい場合は、git diff
ステージング後のファイルでの変更箇所を見たい場合は、git diff -cached

git log

ローカルリポジトリのコミット履歴を表示する。これでコミットID、日時、コメント、変更箇所などが見れる。
基本的にはこれでいいと思う。
1行で簡易表示させたい場合は、git log --oneline
変更箇所と変更行数を表示したい場合は、git log -p

git add -A

git add ○で指定したファイルをaddできます。○=ファイルパス
git add -Aで、管理下にあるディレクトリで変更分のみ、addできます。
変更したかどうかに関わらず、git管理下にあるすべてのファイルをaddしたい場合は、git add . で出来ます。

git commit

git commitでaddして保存された内容にコメントを付けて、コミットできます。
git管理下にあるディレクトリの変更箇所のみをローカルリポジトリに保存できます。
オプションなし(= git commit)に実行することそのままエディターが開き、そこでコメントが打てます。

簡単なコメントを添えてコミットしたい場合は git commit -m "your comment " でコミットできます。

addとcommitを合わせて実行したい場合は、git commit -amend

git push

リモートリポジトリ(githubなど)にローカルリポジトリの内容を反映できます。

マスターブランチのものを反映したい場合は、git push origin masterとなります。

サブブランチのものを反映したい場合は、git push subbranch_nameで出来ます。

git pull

リモートリポジトリをローカルリポジトリに反映したい場合は、git pull origin masterで出来ます。
個人開発では2台のPCを使って開発を進めたいときなどに使えると思います。

git checkout -- filename

ステージング前の変更を取り消す。
つまり、追加・修正など変更を加えていたものすべてを最新のステージング後の状態に戻す。

git commit --amend

直前のコミットの内容を変更する。 直前のコミットを取り消す場合は、git revert HEAD
git revert HEAD^で、2つ前のコミットを取り消すこともできる。
これらはpushしてしまったコミットには、使えません。

git reset --hard HEAD

1つ前のコミットの状態に戻ることができる。
2つ前のコミットの状態に戻るには、git reset --hard HEAD^

git mv filename, git rm filename

git管理下にあるファイルを移動する。(git mv filename)
git管理下にあるファイルを削除する。(git rm filename)
git管理下にあるファイルの場合、通常のLinuxコマンドmv filename, rm filenameでは移動・削除はできない。

git config --global alias.〇 △

○=エイリアス名(短縮名)、△=コマンド名(add, commit, statusなど)
命令(add, commit, statusなど)にエイリアス(短縮名)を付けて実行できるようにする。
例)git config --global alias.ci commit
することで、git ciでコミットできるようになる。
設定したエイリアスを確認するには、git config -l

ここからは補足です。興味ある方は見てみて下さい。

add, commit, pushは具体的に何してるのか

まずはGitの仕組みについて簡単に説明するよ

Gitには現在作業をしているGit管理下のディレクト「ワーキングツリー」
バージョンを管理したいファイルを置いておく「インデックス」(ステージングエリア)
過去の変更履歴を管理したりリモートリポジトリに送る変更履歴がある「ローカルリポジトリ
複数人で変更履歴を共有できる「リモートリポジトリ」の4つのエリアがあります。

上記でも少し出てきたブランチというものもありますが、今回は割愛します。

add

git addではワーキングツリーからインデックスに管理したいファイルやフォルダを追加すること(ステージング)を行っています。

ファイルはインデックスに追加すればバージョン管理できますので、変更したファイルはインデックスに追加しておきましょう。

ただし、パスワードなど外部に漏れたら困る情報が記載されたファイルはステージングしないようにしましょう。(特定のファイルを無視するには.gitignoreファイルを使えば無視できます。)

commit

git commitではインデックスのファイルの変更内容をコメントを付けてローカルリポジトリに記録することを行っています。

push

git pushではローカルリポジトリからリモートリポジトリにアップすることを行っています。

これでローカルリポジトリの変更履歴をリモートリポジトリに反映させることができます。

イメージとしてこんな感じ

分かりやすい図があったので、引用してます。

f:id:tkmt-hrkz:20200601011301p:plain 引用元:【Git入門】初めに知るべき仕組み・基本知識 全まとめ【これだけでOK】 | 初心者向け完全無料プログラミング入門

Git管理ファイル作成からpushまでの流れ(Github利用)

作業用ディレクトの最上位に移動

git init

git remote add origin repository_URL

git add -A

git commit

git push

参考サイト

Gitの仕組み kray.jp oldbigbuddha.dev

Git管理ファイル作成からpushまでの流れ(Github利用) techacademy.jp