やっておくと捗る設定
ユーザー情報を設定
git config --global user.name "Hanako Yamada"
git config --global user.email "username@example.com"
--no-ff フラグをデフォルトにする
--no-ffフラグは常にNone Fast fowardなマージを強制します。
git config --global merge.ff false
引数無しのgit pushを現在のブランチのみに限定する
git config --global push.default simple
UTF-8問題解決設定
git config --global core.precomposeunicode true
色付け
git config --global color.ui auto
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
git diffの出力をページャ対応にする
git config --global core.pager "lv -c"
主要コマンド
ローカルリポジトリの作成
git init
git flow init -d
共有リポジトリの作成
git init --bare example.git
変更されたファイルの一覧を表示
git status -s -b
変更の確認(add前)
git diff
変更したファイルを追加
git add ファイル名
新規作成されたファイルを全て追加
git add -A
変更/削除されたファイル(新規作成除く)を追加
git add -u
変更の確認(コミット前)
git diff --staged
または
git diff --cached
コミット
git commit -m "コメント"
変更の確認(コミット後)
git show
または
git diff HEAD
直前のコミットを取り消す
git reset
コミットにタグを付ける
git tag <タグ名>
リポートリポジトリの登録
git remote add origin リポジトリ
リモートへpush
git push -u origin master
git push
現在の状態を元にブランチを作成し移動
git checkout -b new-branch
現在のブランチを表示
git branch
ブランチ切り替え
git checkout new-branch
現在の作業中の状態をコミットせずに一時的に保管する
git stash <保存名もしくはコメントなど>
stashで保存した作業ツリーに戻る
git stash pop
すでに版管理対象になっているものを管理から外す
git rm -r --cached hoge
ブランチの変更をマージ
git checkout master
git merge topic/hoge
現在のブランチの状態を、派生元のブランチの最新の状態から派生するよう変更する
※共有ブランチをrebaseするとpushできなくなるので気をつける
git rebase <派生元ブランチ>
リモートの状態をローカルに反映
git pull
rebaseしてpull
git pull --rebase
リモートの状態をローカルに保存(マージはしない)
git fetch
リモートリポジトリをローカルにコピー
git clone ssh://[ユーザー名@]<ホスト名>[:ポート番号]/<Gitリポジトリのパス>
変更履歴を参照
git log
Git-flow
初期化
git flow init -d
メインブランチ
masterブランチとdevelopブランチ
- origin/master は、製品として出荷可能な状態を常に反映する
- origin/develop は、次のリリースのための最新の開発作業の変更を常に反映する
- develop ブランチのソースコードが安定し、リリースの準備ができたとき、 develop ブランチの全ての変更は master ブランチへマージされ、リリース番号をタグ付けされる
- master へ変更がマージされる時はいつも、その定義からして新しい製品がリリースされる時
サポートブランチ
フィーチャーブランチ(トピックブランチ)
- 将来のリリースに入るような新しい機能を開発するのに使われる。
- develop ブランチから分岐する。
git flow feature start myfeat
- 確実に今度のリリースに追加する、開発済みの機能は、develop ブランチにマージされる
- フィーチャーブランチは典型的には開発者のリポジトリにだけ存在し、 origin には存在しない。
git flow feature finish myfeat
リリースブランチ
- リリースブランチは develop ブランチから作成される。
- リリース直前のマイナーなバグフィクスや、リリースのためのメタデータ(バージョン番号、ビルド日時、他)の準備を行う
git flow release start v1.0
- リリースが終わった後、develop と masterにマージし、リリースブランチは削除される。
git flow release finish v1.0
ホットフィックスブランチ
- ホットフィックスブランチは master ブランチから作成される。
- 製品バージョンにあるクリティカルなバグがすぐに解決されなければならないとき、作成される。
git flow hotfix start v1.0.1
- バグを修正し、develop と master にマージした後、削除される。
- ※リリースブランチが存在していたら、develop の代わりにリリースブランチにマージする
git flow hotfix finish v1.0.1
Github Flow
Git Flow を簡略化し、Pull Requestによるコードレビューを取り入れたもの。
- developブランチは作成しない。
- 全てのブランチはmasterブランチから作成し、masterブランチへマージされる。
- 作業用のブランチは定期的にリモートへプッシュする。
- GitHubのプルリクエストの機能を利用して、ソースコードのレビューを行った後、masterブランチにマージする。
- マージされたmasterブランチのコードは、すぐにデプロイする。
pull requestする際のベストプラクティス
GitHubへpull requestする際のベストプラクティス - hnwの日記
フックの設定
pushしたら自動デプロイ
cd /var/www/app_production && /usr/bin/git --git-dir=.git fetch && /usr/bin/git --git-dir=.git merge origin
GUI
SourceTree
Free Mercurial and Git Client for Windows and Mac | Atlassian SourceTree
学習ツール
リポジトリホスティングサービス
GitHub
- 公開リポジトリ無料/無制限
- Privateリポジトリは有料(5個/月7ドル 〜 50個/月50ドル)
Bitbucket
- 公開リポジトリ無料/無制限
- Privateリポジトリ無料/無制限
- 5ユーザまで無料
- 日本語対応
参考URL
見えないチカラ: A successful Git branching model を翻訳しました
見えないチカラ: 【翻訳】あなたの知らないGit Tips
Gitブランチを使いこなすgit-flow/GitHub Flow入門(1):いまさら聞けない、成功するブランチモデルとgit-flowの基礎知識 (1/2) - @IT
github を用いた開発フロー テンプレート
gitのpush.defaultに関するノウハウ - Qiita
Linux - Gitをインストールしたら真っ先にやっておくべき初期設定 - Qiita
Gitを使いこなすための20のコマンド | SourceForge.JP Magazine
チーム開発に必要なgit コマンドを神速で習得しよう! - 酒と泪とRubyとRailsと
逆引きGit | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
git - fetch と pullの違い - Qiita