YOKOTA’s diary

最近はドローン関連が多いですが…ECやデータ解析、3Dプリンタなども。

初めての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

で終わり!