初めてのgit-flowの使い方
git flowを初めて使った時のお作法や主なコマンド等などの共有用にメモ。
基本前提:gitのローカルリポジトリとリモートリポジトリ
svnはひとつのリモートリポジトリにcommit, merge, updateなどを行うことが多いのに対して、gitはリモートリポジトリから取得したソースをローカルリポジトリと作業ファイルに取得してまずはローカルリポジトリにコミットし、後でまとめてリモートリポジトリにプッシュする。
git flow
git flowとはあるgit運用方法をやりやすくするプラグイン。
developブランチを作成して、新規機能はfeatureごとに作成して後でdevelopにマージし、リリースタイミングでmasterブランチを利用してリリースする。
詳細は下記ご参照。
git-flow cheatsheet
名前・登場人物
- origin:リポジトリ
- branch:ブランチ
- master:メインブランチ
- develop:開発ブランチ
- feature:新機能用ブランチ
私はこのfeatureが初めてだった(元々SVNユーザ)のですが、どういう単位で使われるか(使うことにしたか)というと、ticket単位≒機能単位でバシバシfeatureきってタスクを消化するという感じです。
origin, masterがデフォルト
origin, masterはデフォルトのリモートリポジトリとメインブランチ。
そのため、通常コマンドでは省略されている。
git pull // == git pull origin master
git config --list //masterなどがどこを指しているか確認、変更が可能
最初にリポジトリを設定する際に利用するコマンド
リポジトリをチェックアウトする
git clone http://hohohohogeee.git
ブランチをすべて取得する
git pull --all
git flowを初期化する
git flow init
ここでmasterやdevelop、featureといった名前を決める。デフォルトを利用。
新規機能を作りたいのでfeatureする
「display-pankuzu」の新規機能を開発したい
git flow feature start display-pankuzu
ここでリモートリポジトリとローカルリポジトリに差分があると、正しくfeatureを切れない場合があるため、git pull origin develop (featureはdevelopブランチを元にするので)などでリポジトリを綺麗にしてあげる。
日々の作業で利用するコマンド
現在どのブランチにいるか(どのブランチで作業するのか)を確認する
git branch
develop
* feature/display-pankuzu
master
ブランチを切り替えたい場合
git checkout <branch>
現在の修正状況などを確認する
git status
リポジトリにファイルを追加したり、ファイルを修正、削除した場合などの変更ファイルが確認可能
コミット非対称のファイルを無視させる
開発に便利なプラグインやメモファイルなどがリポジトリ内に作成されている場合に、.gitignoreファイルを作成しファイル名・ディレクトリ名を記載することで変更内容として無視させることができる
vi [リポジトリホーム]/.gitignore a.txt
↑これでa.txtは修正の対象から除外
変更内容の具体的な修正内容を確認する
git diff
一部のファイルを間違えて修正していたので元々のファイル状態に戻す
functions.phpを本に戻す例
git checkout HEAD functions.php
リポジトリの内容を更新する
git pull origin develop
あくまで更新するのはブランチなので、featureではなくdevelopを指定する。 つまり、複数のfeatureを切って作業してもdevelopは同じ。 なるべくfeatureは1つずつ終わらせる(終わるとdevelopにマージされる)のが良いのかな
ローカルリポジトリにコミットする
対象ファイルをaddしてコミット
git add --all git commit -m "message"
git statusでadd/commit状況は確認することが可能
リモートリポジトリにプッシュする
git push
マージなどは随時。
featureが終了したら
git flow feature finish display-pankuzu
で終わり!