はじめに
Railsなどを中心に勉強中のエンジニア初心者が他の記事を参考にしたり、実際に実装してみたりして、アウトプットの一環としてまとめたものです。
間違っていることもあると思われるので、その際は指摘いただけると幸いです。
git init
ローカルリポジトリが作成される(.git
ディレクトリが作成される)。
$ git init
>
・リポジトリ
・圧縮ファイル
・ツリーファイル
・コミットファイル
・インデックスファイル
・設定ファイル
git config
git
にユーザー情報を登録する。誰がコミットしたかなどの履歴に残る。
$ git config --global user.name "ユーザー名"
$ git config --global user.email "メールアドレス"
$ git config --list
>
credential.helper=osxkeychain
init.defaultbranch=main
user.name=ユーザー名
user.email=メールアドレス
git clone <リポジトリ名>
リモートリポジトリからローカルリポジトリにクローン(コピー)を作成する。
$ git clone https://github.com/aaa/bbb.git
git add
変更箇所をローカルのワークツリーからステージに追加する(コミットする変更を準備する)。
$ git add <ファイル名>
$ git add <ディレクトリ名>
$ git add .
git commit
ローカルのステージからローカルリポジトリに変更箇所を記録する。
$ git commit # gitエディタが立ち上がり、メッセージを追加する事ができる
$ git commit -m "<コミットメッセージ>" # gitエディタが立ち上がることなく、メッセージを追加する事ができる。
$ git commit -v # gitエディタが立ち上がり、さらにどのような変更を加えたかをエディタ上から確認する事ができる
git status
現在の変更状況を確認する。
ローカルリポジトリに反映されていない変更分が表示される(ワークツリー内の変更箇所、ステージ内の変更箇所)。
コミットしてローカルリポジトリに変更箇所を取り込むことで表示されなくなる。
$ git status
git diff
変更差分を確認する。
# git addする前の変更分確認
$ git diff <ファイル名>
# git addした後の変更分確認
$ git diff --staged
git log
変更履歴(コミット履歴)を確認する。
# 変更履歴を確認する
$ git log
# 変更履歴を1行で確認する
$ git log --oneline
# ファイルの変更差分を表示する
$ git log -p index.html
# 表示するコミット数を制限する
$ git log -n <コミット数>
git remote add <リモート名> <リモートリポジトリURL>
<リモート名>
に指定した名前で、<リモートリポジトリ>
のURLを登録する。
今後は<リモート名>
に指定した名前で、GitHubリポジトリにプッシュしたりクローンしたりできる。
リモート名には通常はoriginが用いられる。
$ git remote add origin https://github.com/aaa/bbb.git
git push <リモート名> <ブランチ名>
ローカルリポジトリの内容をリモートリポジトリにプッシュする。
$ git push origin master
# origin(登録したリモートリポジトリのURL)に対してmasterブランチをプッシュしている
git reset
変更分を取り消す。
HEADは現在自分がいる位置のこと(どのブランチのどのコミット位置か)。
オプションとして--soft
と--hard
などがあるが、基本的には--soft
を付けて使うと良い。
注意点としてリモートリポジトリにプッシュ済みのコミットはやり直してはいけない。
# ステージから変更分を取り消す(ワークツリーの変更分には影響がない)
$ git reset HEAD <ファイル名> # ファイルの変更を取り消す
$ git reset HEAD <ディレクトリ名> # ディレクトリの変更を取り消す
$ git reset HEAD . # 全ての変更を取り消す
# コミットのみを取り消す場合は:--soft
# コミットコードを指定
$ git reset --soft <commitID>
# 直前のコミットを取り消しする場合
$ git reset --soft HEAD^
# コミット、ステージ、ワークツリーの変更が全て取り消される
# コミットコードを指定
$ git reset --hard <commitID>
# 直前のコミットを取り消しする場合
$ git reset --hard HEAD^
git commit --amend
直前のコミットのみやり直す事ができる。
リモートリポジトリにプッシュしたコミットはやり直してはいけないため注意。
$ git commit --amend
git remote
設定しているリモートの情報を表示する。
# リモートリポジトリの登録名称を表示する
$ git remote
>
origin
# リモートリポジトリのURLを表示する
$ git remote -v
>
origin https://github.com/aaa/bbb.git (fetch)
origin https://github.com/aaa/bbb.git (push)
# リモートリポジトリの詳細情報を表示する
# 表示される情報は、「fetchとpushのURL」、「リモートブランチ」、「pullの挙動」、「pushの挙動」。
$ git remote show origin
* remote origin
Fetch URL: https://github.com/aaa/bbb.git
Push URL: https://github.com/aaa/bbb.git
HEAD branch: main
Remote branch:
main tracked
Local ref configured for 'git push':
main pushes to main (up to date)
git fetch
リモートリポジトリから情報を取得する。なにはともあれとりあえず、git fetch
するようにする。
$ git fetch
$ git fetch <リモート名>
git pull
リモートリポジトリから情報を取得してマージする。
基本的にはgit fetch
で情報を取得したのちに、fetch
してきた情報を確認したうえで、ローカル上でマージする方が好ましい。
$ git pull <リモート名> <ブランチ名>
$ git pull origin master
# 上記コマンドは省略可能
$ git pull
# 下記コマンドは上記コマンドと同じ結果になる
$ git fetch origin master
$ git merge origin master
git branch <ブランチ名>
ブランチを新規追加する。ブランチの切り替えまでは行われない。
$ git branch feature # featureブランチを新規追加する
git branch
ブランチの一覧を表示する。
-a
オプションをつけるとリモートブランチの情報も含めて全て表示する
# ローカルブランチの一覧を表示する
$ git branch
>
* develop # 「*」は現在いるブランチを表している
main
# リモートも含めてブランチの一覧を表示する
$ git branch -a
>
* develop # 「*」は現在いるブランチを表している
main
remotes/origin/main # 「-a」オプションをつけるとリモートブランチの情報も含めて全て表示する
git checkout <ブランチ名>
ブランチを切り替える。
-b
オプションをつける事で、ブランチの新規作成と切り替えを同時に実行できる。
# 別の既存ブランチに切り替える
$ git checkout <既存ブランチ名>
# ブランチを新規作成し、作成したブランチに切り替える
$ git checkout -b <新規ブランチ名>
git branch -d <ブランチ名>
-d
オプションを付ける事で、対象のブランチを削除する事ができる(master
ブランチにマージされていないブランチは削除できない)。
-D
オプションを付けると、強制的にブランチを削除する事ができる。
# ブランチを削除する(masterブランチにマージされていないブランチは削除されない)
$ git branch -d feature
# 強制的にブランチを削除する
$ git branch -D <ブランチ名>
git merge
作業中のブランチを指定したブランチにマージする
# ローカルリポジトリのブランチにマージする
$ git merge <ブランチ名>
# リモートリポジトリのブランチにマージする
$ git merge <リモート名/ブランチ名>
$ git merge origin/master
git stach
作業を一時避難する。
作業途中に、コミットせずにワークツリーの差分を元に戻したいときに使用する(急遽バグ対応などをする必要がある場合など)。
# 作業途中の変更分を一時避難する
$ git stash
# 避難した作業を確認する
$ git stash list
# 避難した作業を復元する(以下のコマンドは避難作業の復元と削除を同時に実行する)
$ git stash pop
git remote rename <旧リモート名> <新リモート名>
リモート名を変更する
$ git remote rename origin tutorial # リモート名がoriginからtutorialに変更される
git remote rm <リモート名>
ローカルリポジトリとリモートリポジトリの連携を削除する(リモートリポジトリの情報は削除されない)。
$ git remote rm origin
git branch -m <ブランチ名>
現在作業しているブランチの名前を変更する。
$ git branch -m new_branch
.gitignore
.gitignore
に記載されているファイルはgit
で管理されない。
自動生成されるファイルやパスワードが記載されているファイルなどはgit
で管理しないように.gitignore
に記載する。
# .gitignoreファイルについて
# #から始まる行はコメント
# 指定したファイルを除外
index.html
# ルートディレクトリを指定
/ronn.html
# ディレクトリ以下を除外
dir/
# /以外の文字列にマッチ「*」
/*/*.css
git rm <ファイル名>
ファイルの削除を記録する。
# ファイル(ディレクトリ)ごと削除
$ git rm <ファイル名>
$ git rm <ディレクトリ名>
# ファイルを残したいとき
$ git rm --cached <ファイル名>
git mv <旧ファイル> <新ファイル>
ファイルの移動を記録する(linux
のmv
コマンドと同じ機能)。
# 同様のコマンド①
$ mv <旧ファイル> <新ファイル>
# 同様のコマンド②
$ git mv <旧ファイル> <新ファイル>
$ git rm <旧ファイル> <新ファイル>
git config alias.<エイリアス> <コマンド>
コマンドにエイリアスをつける(別名をつける)。
--global
をつけるとPC全体の設定となる。
$ git config --global alias.ci commit
$ git config --global alias.st status