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 派生先ブランチ名
  • ブランチの削除
    • $ 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
  • 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