Git で出来ること
- ファイルのバージョン管理
- 以前の状態に戻せる
- チームでスムーズに開発できる
GitHub で出来ること
- コードの共有
- コードレビュー
- OSS に参加
Git 基本コマンド
git init
ローカルリポジトリを新規に作成する。
$ git init
git add , git commit
ローカルの変更内容をステージにあげる。ファイル名を指定。.
は全ファイル。
$ git add <ファイル名>
$ git add .
ステージに上げたものを、コミットし、リポジトリにあげる。
$ git commit -m "コミットメッセージ"
git diff , git status
リポジトリとワークツリーの差分をチェックする。
$ git diff
リポジトリとステージの差分をチェックする。
$ git diff --staged
変更ファイルをチェックする。
$ git status
git log
変更履歴を確認する。
$ git log
git restore
ワークツリーの変更を取り消す。
$ git restore <ファイル名>
ステージにあげた変更をワークツリーに戻す。
$ git restore -staged <ファイル名>
ブランチ
git branch
ブランチを作成する。
$ git branch <ブランチ名>
ブランチ一覧を表示する
$ git branch
$ git branch -a
git switch
ブランチを切り替える。-c
つけるとブランチを作成して切り替える。
$ git switch <ブランチ名>
$ git switch -c <ブランチ名>
git merge
変更をマージする
$ git merge <ブランチ名>
$ git merge origin/<ブランチ名>
git hub とのやりとり
git config
初期設定。
$ git config --global user.name "XXX"
$ git config --global user.email "XXX@example.com"
git remote
リポジトリを追加する。
$ git remote add origin <リモートURL>
git push
リモートへ push する。
$ git push origin <ブランチ名>
git pull
リモートから pull する。(ワークツリーまでに反映する。)
$ git pull
git fetch
リモートから fetch する。(ローカルリポジトリまでに反映する。)
$ git fetch
プルリク
余計なファイルをコミットしてしまって、ignore したい
$ git rm --cached <ファイル名>
$ echo <ファイル名> >> .gitignore
直前のコミットを無しにしたい
リモートリポジトリに取り込まれていない場合
# HEAD だけ元に戻す。
$ git reset --soft HEAD^
# HEAD と インデックスを元に戻す。
$ git reset HEAD^
# HEAD と インデックス、ワークツリーを元に戻す。
$ git reset --hard HEAD^
リモートリポジトリに取り込まれている場合
$ gi revert <コミット>
別のブランチにコミットしてしまった
$ git branch <別ブランチ>
$ git reset --soft HEAD^
$ git switch <別ブランチ>
コミットを間違って消しちゃった
# コミット履歴を確認。
$ git reflog
# git reset する前の HEAD を指定。
$ git reset --hard <コミット>
ブランチを間違って消しちゃった
$ git reflog
$ git branch <ブランチ名> <コミット>
コミットメッセージを間違えた
$ git commit --amend
マージしたけどコンフリクトしまくって元に戻したい
$ git reset --hard ORIG_HEAD
ブランチ名を間違えてつけた
$ git branch -m <ブランチ名>
コミットはせずに変更を退避したいとき
$ git stash
$ git stash pop
誤ったコミットをpushしてしまった
$ git push origin :<ブランチ名>
$ git reset --hard <コミット>
$ git push origin <ブランチ名>
商用リリースをしてバグがあったので切り戻す
$ git log
$ git revert <マージコミット>