よく使うGitの基本的なコマンドを、簡単な使い方と一緒にまとめた。
git init <directory>
git リポジトリを作成するコマンド。
コマンド実施後は.gitというディレクトリが作られるが、
これがgit管理のデータなどが入っているリポジトリ情報の本体。
<directory>を指定しない場合、カレントディレクトリにgitリポジトリを作成する。
git init
<directory>を指定した場合、 指定ディレクトリにgitリポジトリを作成※する。
※指定ディレクトリが既に存在する場合はその中に.gitファイルを作成する。指定ディレクトリが存在しない場合は、指定ディレクトリを作成して、その中に.gitファイルを作成する。
git init ./test-dir
git status
ローカルgitリポジトリの状態を確認するコマンド。
gitを使用する上で最も実行することになるであろうコマンド。
なので「gst」など、エイリアスを設定しておくと便利。
git add <file>
ステージングエリアへファイルを追加し、コミット対象にするコマンド。
<file>に関しては、半角区切りで複数のファイルを指定可能。
git add file1.txt file2.txt file3.txt
<file>の代わりに、–allを指定すると、全てのファイルが追加対象となる。
git add --all
git commit
ステージングされているファイルをローカルリポジトリにコミットするコマンド。
オプション無しで実行すると、テキストエディタが開き、コミットメッセージの入力を求められる。
git commit
git commit -m <メッセージ>で、一行だけのメッセージとともにコミット可能(テキストエディタは開かない)。
git commit -m "不具合を修正"
–amendを指定すると、直前のコミットメッセージを修正する。
コミット後、何もステージングされていない状態で行う。
git commit --amend
–amend–no-editを指定すると、コミットし忘れたファイルをコミットに含める。
直前のコミットに適用。事前にファイルをステージングしておく。
git commit --amend--no-edit
git commit -a -m ‘コミットメッセージ’
変更のあったファイルをまとめてadd+commitするコマンド。
ただし、変更があったファイルのみであり、新規作成のファイルには適用されない。
git log
gitの履歴を表示するコマンド。
git log
<file>を指定すると、指定したファイルを含むログのみ表示する。
git log file.txt
-n <数字>を指定すると、指定した数字分だけログを表示する。
git log -n 10
–onelineを指定すると、コミット内容を一行にして表示する。
ハッシュ値は7桁のみ表示。
git log --oneline
–graphを指定すると、グラフィカルに視覚化されたgitログを表示する。
git log --graph
git diff
ファイルの変更差分を確認するコマンド。
使い方はたくさんあるので、別に詳しくまとめる。
git reset <file or commit id>
(https://www.r-staffing.co.jp/engineer/entry/20191129_1)
コミット履歴を過去に遡って、それ以降のコミットをなかったことにするコマンド。
git reset file.txt
<commit id>を指定すると、指定したコミットIDの位置まで戻り、ステージングエリアもその時まで戻す。ワーキングディレクトリに影響はない。
git commit <commit id>
その他使い方はたくさんあるので、別に詳しくまとめる。
※ポイントとしては、git resetはリポジトリのHEADを特定のコミットまで戻すことが最も重要な概念で、プラスして、–soft –mixed –hardで、ステージング、ワーキングのファイルをどこまで道連れにするか決定できると言うことだ。
git checkout
<branch_name>で、指定したブランチに移動する 。
git checkout <branch_name>
<file>で、 ステージングエリアの変更内容を、ワーキングディレクトリに上書きする。
→後にgit reset <file>でアンステージもセットで行う。
git checkout file.txt
<commit id> <file> 指定したファイルを、コミットID時の状態に戻す。
git checkout <commit id> file.txt
<commit id> プロジェクト内全てのファイルを指定したコミットID時の状態に戻す。閲覧用。git checkout <branch_name>を打つことで、元いた最新の状態に戻ることができる。
git checkout <commit id>
git revert <commit id>
<commit id>を指定すると、指定したコミットIDのコミットを打ち消すコミットをする。安全。
git revert <commit id>
git rm <file>
<file>を指定すると、指定したファイルをワーキングディレクトリとステージングエリアから削除する。
git rm file.txt
–cached <file>を指定すると、指定したファイルをステージングエリアから削除する。
git rm --cached file.txt
–cachedに関しては、下記の記事が関連記事としてあるので、参考までに。
git clean
git cleanはワーキングディレクトリの未追跡ファイルを削除するコマンド。
git clean
-n 削除せず、削除対象を表示するためのコマンド(ドライラン)
git clean -n
-f 削除時、強制削除
git clean -f
-d ディレクトリを対象とする
git clean -d
git mv <file> <新しい名前>
<file>で指定したファイルを新しい名前に変更する。
コマンド実施後はステージングエリアに追加される。
git mv file.txt file_new.txt
git branch
git branchは、ブランチを一覧表示するコマンド。
現在いるブランチは*が付いた状態で表示される。
<branch> 指定したブランチの作成
git branch development
-m <branch> 選択中のブランチ名を、指定したブランチ名に変更
git branch -m develop
-d <branch> 指定したブランチの削除。
マージされていないコミットがある場合や、チェックアウト中のブランチの場合は削除できない。
git branch -d develop
-D <branch> マージ残を無視して指定のブランチを削除。
git branch -D develop
git remote add <リモートリポジトリ名> <リモートリポジトリURL>
指定のリモートリポジトリ名を、
指定のリモートリポジトリURLに対して付与するコマンド。
git remote add origin https://github.com/<account>/new-project.git
git push -u <リモートリポジトリ名> <branch>
指定のリモートリポジトリ名の指定のブランチに、
ローカルリポジトリのコミット内容を同期するコマンド。
git push -u origin master
git clone
<リモートリポジトリURL> 指定したリモートリポジトリを、ローカルにセットアップする。
実行した場所にリポジトリディレクトリが作られる。
git clone https://github.com/<account>/new-project.git
<リモートリポジトリURL> <ディレクトリ名> 指定したリモートリポジトリを、
指定したディレクトリ名でローカルにセットアップする。
git clone https://github.com/<account>/new-project.git new-project-dev
git fetch
<指定なし> 現在いるリポジトリの最新情報を取得する。
git fetch
—all 全てのリポジトリの最新情報を取得する。
git fetch --all
git merge
<branch> 指定したブランチの変更内容を現在のブランチに取り込む。
(fetchしてから)<リモートリポジトリ名/branch> 指定したリモートリポジトリのブランチのfetch結果を現在いるブランチに取り込む
git pull <リモートリポジトリ名> <branch>
指定したリモートリポジトリのブランチの最新状態を、
現在のブランチに取り込む(fetch&merge)。
git pull origin master
git blame <file>
対象のファイルを行ごとに誰がいつ記載したのか調べることができる
git stash
コミットされていないファイルの修正を一時的に保存しておく。保存した後は、修正をコミットしていなくても他ブランチにチェックアウト可能。
pop 保存しておいた修正内容を取り出す(後入れ先だし)。
git rebase
コミットを良い感じに整理してわかりやすくする。
使い方は複雑なので、別に詳しくまとめる
git cherry-pick <commit id>
指定したコミットを再コミットする。