2017/06/18
git定番コマンドまとめ
gitの個人的よく使うコマンド一覧を整理してみました
基本的な仕組み
[ワーキングツリー]—add—>[インデックス]—commit—>[ローカルレポジトリ]—push—>[リモートレポジトリ]
初期設定
- git設定
- git config –edit //ローカル設定
- git config –edit –global //グローバル設定
ローカルレポジトリ
- ローカルレポジトリの初期化
- $ git init
- インデックス(ローカルレポジトリ記録対象リスト)に対象ファイルを追加
- $ git add [対象ファイルのパス]
- インデックス(ローカルレポジトリ記録対象リスト)から対象ファイルを除外
- $ git rm –cached [対象ファイル名のパス]
- インデックスにあるデータをローカルリポジトリにコミット
- $ git commit -m コミットメッセージ
- コミットメッセージのみ修正
- $ git commit –amend //ローカル変更のみ
- $ git -f push origin ブランチ名 //リモートへの反映
- コミットの取り消し
- $ git reset –soft HEAD^ //ワークディレクトリの内容はそのままコミットだけを取り消し
- $ git reset –hard HEAD^ //コミット取り消して前回コミットの時点までワークディレクトリの内容をロールバック
- $ git -f push origin ブランチ名 //リモートへの反映
- ローカルリポジトリの過去コミット時点までロールバック
- $ git reset –hard HEAD //最新のコミット時点まで戻す
- $ git reset –hard コミットID // 2つ以上前のコミット時点まで戻す
- ロールバックの取り消し
- $ git reflog //過去の全履歴から目的の戻し位置を探す
- $ git reset –hard xxxxxx //コミットID指定して戻す
- 作業途中の変更内容の一時退避
- $ git stash
- $ git stash list
- 一時退避した変更内容の復活
- $ git stash apply stash@{aaa}
- 一時退避した変更内容の確認
- $ git diff HEAD..stash@{aaa}
リモートレポジトリ
- リモートレポジトリの登録状況確認
- $ git remote -v
- リモートレポジトリの登録
- $ git remote add origin リモートレポジトリのURL
- Github上ではhttps://github.com/ユーザー名/レポジトリ名.gitと表示されるが、ユーザ名をつけること
- 例)https://ユーザー名@github.com/ユーザー名/レポジトリ名.git
- ローカルレポジトリの内容をリモートレポジトリへpush
- $ git push origin ブランチ名
ブランチ
- ブランチ一覧表示
- $ git branch
- ブランチの作成
- $ git branch ブランチ名
- ブランチ名の横に「」がついているものが現在いるブランチ
- ブランチの切替
- $ git checkout ブランチ名
- ブランチのマージ
- ブランチ先でまずは最新版をpush
- $ git commit -m “テスト”
- $ git push origin ブランチ名
- ブランチを派生元に切替
- $ git checkout develop
- 派生元ブランチでマージ
- $ git merge –no-ff 派生先ブランチ名
- ブランチ先でまずは最新版をpush
- ブランチの削除
- $ git branch -d ブランチ名
- 空ディレクトリの管理の仕方
- http://phiary.me/git-empty-directory-add/
Gitの運用ルール
現在は「Git-Flow」か「Github-Flow」の2択。 GitHub-Flowの方がシンプルで扱いやすい、本格的なシステム運用にはGithub-Flow、という位置付け。
Github-Flow
- masterブランチはいつでもデプロイ可能にする
- 開発はトピックブランチを切って行う。この時用途に応じて説明的な名前をつける
- 機能追加–>add_user_notification
- バグフィックス–>fix_user_login_validation_error
- トピックブランチにはこまめにcommit&pushする。
- 開発完了時や、未完了時点の相談はPullRequest
- 完了済の場合–>PullRequest。Merge依頼
- 未完了の場合–>PullRequest名に[WIP]をつける(Work in Progressの略)
- PullRequestでMergeOKならmasterへMerge
- masterプッシュ後に即デプロイ
Git-Flow
//TODO:要追加
参考
- [書籍]Github実践入門
- https://goo.gl/mg9bWB
- git初心者への道
- https://gist.github.com/yatemmma/6486028
- Github-Flow図解
- http://qiita.com/tbpgr/items/4ff76ef35c4ff0ec8314
- GitHub Flowまとめ
- https://gist.github.com/Gab-km/3705015
- Gitでやらかした時に使える19個の奥義
- http://qiita.com/muran001/items/dea2bbbaea1260098051