// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

SourceTreeを使って Git Flowを動かしてみて、Git Flowの開発フローを整理してみました。


#contents



SourceTreeでGit Flowを実施するには、基本的には何かしようとしたら右上にある Git FlowのアイコンをクリックすればOKです。そのときに応じた、Git Flowのコマンドを実行することができます。


#ref(00UI.png)

**初回のみ [#maf7651c]
***Git Flow開始時 [#s84c7b19]

#ref(01Git-Flow開始時.png)

 git init -d 
 Using default branch names.
 
 Which branch should be used for bringing forth production releases?
    - develop
    - master
 Branch name for production releases: [master] 
 
 Which branch should be used for integration of the "next release"?
    - develop
 Branch name for "next release" development: [develop] 
 
 How to name your supporting branch prefixes?
 Feature branches? [feature/] 
 Release branches? [release/] 
 Hotfix branches? [hotfix/] 
 Support branches? [support/] 
 Version tag prefix? [] 
 Completed successfully
 

**チケット対応開始時 [#vf857200]
***新規フィーチャー dev_50 の開始 [#r71dccf6]

#ref(02新規Feature dev_50の開始01.png)

#ref(02新規Feature dev_50の開始02.png)

 git feature start dev_50 
 Switched to a new branch 'feature/dev_50'
 
 Summary of actions:
 - A new branch 'feature/dev_50' was created, based on 'develop'
 - You are now on branch 'feature/dev_50'
 
 Now, start committing on your feature. When done, use:
 
      git flow feature finish dev_50
 
 Completed successfully


***開発! [#pf2af99e]

開発します。仮想的に下記の二つをコミットして、リモートにプッシュしておきます。

下記は実際に自分で実行したコマンド。
 $ git commit --allow-empty -m '#50 start.'
 [feature/dev_50 ec9378f] #50 start.
 $  git commit --allow-empty -m '#50 end.'
 [feature/dev_50 9ef6661] #50 end.

 $ git push origin feature/dev_50
 Counting objects: 2, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (2/2), done.
 Writing objects: 100% (2/2), 280 bytes | 0 bytes/s, done.
 Total 2 (delta 1), reused 0 (delta 0)
 remote: Resolving deltas: 100% (1/1), done.
 To https://github.com/masatomix/git-flow-sample.git
  * [new branch]      feature/dev_50 -> feature/dev_50
 $

***現在のブランチ(フィーチャー)の終了 [#i4268f28]


#ref(03現在のブランチの終了01.png)

#ref(03現在のブランチの終了02.png)

 git feature finish -k dev_50          ← -k はローカルブランチを残す設定(削除を選んだら、-kはつかなかった)
 Switched to branch 'develop'
 Your branch is up-to-date with 'origin/develop'.
 Already up-to-date!
 Merge made by the 'recursive' strategy.
 
 Summary of actions:
 - The feature branch 'feature/dev_50' was merged into 'develop'
 - Feature branch 'feature/dev_50' is still available
 - You are now on branch 'develop'
 
 Completed successfully



**リリース開始時 [#w3e2f1f3]
各種チケット対応はいったん停止し、リリース準備作業にはいります。

***新規リリースの開始 [#a4531643]

↓間違えないように「新規リリースを開始」を選択
#ref(04新規リリースの開始01.png)

#ref(04新規リリースの開始02.png)

 git release start 0.0.2 
 Branches 'develop' and 'origin/develop' have diverged.
 And local branch 'develop' is ahead of 'origin/develop'.
 Switched to a new branch 'release/0.0.2'
 
 Summary of actions:
 - A new branch 'release/0.0.2' was created, based on 'develop'
 - You are now on branch 'release/0.0.2'
 
 Follow-up actions:
 - Bump the version number now!
 - Start committing last-minute fixes in preparing your release
 - When done, run:
 
      git flow release finish '0.0.2'
 
 Completed successfully

*** リリース準備作業! [#v27952b7]

仮想的なリリース準備作業としてこんなコミットとプッシュを。
下記は実際に自分で実行したコマンド。

 $  git commit --allow-empty -m 'release 0.0.2 start.'
 [release/0.0.2 5a65a48] release 0.0.2 start.
 $ git commit --allow-empty -m 'release 0.0.2 end.'
 [release/0.0.2 0759703] release 0.0.2 end.

 $ git push origin release/0.0.2
 Counting objects: 3, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 440 bytes | 0 bytes/s, done.
 Total 3 (delta 2), reused 0 (delta 0)
 remote: Resolving deltas: 100% (2/2), done.
 To https://github.com/masatomix/git-flow-sample.git
  * [new branch]      release/0.0.2 -> release/0.0.2
 $
 
***リリースの完了(UI上は、ブランチの終了) [#e0c961f9]



#ref(05リリースの完了01.png)

#ref(05リリースの完了02.png)

 git release finish -k -f /var/folders/fp/ph0q_b6s64v9pmpbn8x547400000gp/T/SourceTreeTemp.nX6rDe 0.0.2 
 Branches 'develop' and 'origin/develop' have diverged.
 And local branch 'develop' is ahead of 'origin/develop'.
 Switched to branch 'master'
 Switched to branch 'develop'
 Your branch is up-to-date with 'origin/master'.
 Already up-to-date!
 Merge made by the 'recursive' strategy.
 Your branch is ahead of 'origin/develop' by 3 commits.
   (use "git push" to publish your local commits)
 Already up-to-date!
 Merge made by the 'recursive' strategy.
 
 Summary of actions:
 - Latest objects have been fetched from 'origin'
 - Release branch has been merged into 'master'
 - The release was tagged '0.0.2'
 - Release branch has been back-merged into 'develop'
 - Release branch 'release/0.0.2' is still available
 
 Completed successfully


コミットグラフは以下のようになりました。

#ref(06graph01.png)


流れをまとめると、以下の通り。

-developからfeature/dev_50 がブランチされて、対応が完了したらdevelopへマージコミット。
-また、develop からリリース用の release/0.0.2 がブランチされ、そこでリリース準備作業が行われます。
-リリースブランチでの作業が develop と master へマージコミットされ、最後にそのマスターの状態(というかコミット)にタグ0.0.2が打たれます。



** ローカルの変更をGitHubへプッシュ [#e05f8a58]

最後に develop master ブランチとタグ 0.0.2 をリモートへプッシュして、作業完了です。
下記は実際に自分で実行したコマンド。


 $ git push origin develop
 Counting objects: 1, done.
 Writing objects: 100% (1/1), 242 bytes | 0 bytes/s, done.
 Total 1 (delta 0), reused 0 (delta 0)
 To https://github.com/masatomix/git-flow-sample.git
    aa3dca8..f749970  develop -> develop

 $ git push origin master
 Counting objects: 1, done.
 Writing objects: 100% (1/1), 234 bytes | 0 bytes/s, done.
 Total 1 (delta 0), reused 0 (delta 0)
 To https://github.com/masatomix/git-flow-sample.git
    aa3dca8..63ad35a  master -> master
 $

 $ git tag
 0.0.2

 $ git push origin 0.0.2
 Counting objects: 1, done.
 Writing objects: 100% (1/1), 171 bytes | 0 bytes/s, done.
 Total 1 (delta 0), reused 0 (delta 0)
 To https://github.com/masatomix/git-flow-sample.git
  * [new tag]         0.0.2 -> 0.0.2
 $

#ref(06graph02.png)
 
以上お疲れ様でした。
 

***関連リンク [#kb7b39a8]
-[[SourceTree上でGit Flowを動かしてみる - Qiita>http://qiita.com/masatomix/items/5e520591695f21769f11]]



----
この記事は
#vote(おもしろかった,そうでもない)


#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS