Git、git-flow について [自分用メモ]

<h1>gitについて</h1>

<h4>参考サイト</h4>
<p><strong>サルでも分かるGit入門</strong><br>http://www.backlog.jp/git-guide/reference/</p>
<p><strong>Gitを使いこなすための20のコマンド</strong><br>https://osdn.jp/magazine/09/03/16/0831212</p>


<p>・git→githubの送り先を確認する<br>git remote -v　※herokuの送り先も確認できる</p>
<p>・git flowのリポジトリをGitHubにプッシュする<br>git push -u origin master　※masterブランチ<br>git push -u origin develop　※developブランチ<br>git push -f origin master ※強制Push</p>
・GitHubの送り先を登録
git remote add origin git@github.com:hogehoge/sample-app.git

・Herokuの送り先を登録
git remote add heroku https://git.heroku.com/sample.git

<p>・GitHubの送り先を変更(登録済みのリモートリポジトリのアドレスを変更したい)<br>(githubにpushする際のoriginを変更する方法)<br>git remote set-url (リポジトリの名前) (新しいリポジトリのURL)<br><br>例：<br>git remote set-url origin git@github.com:hogehoge-app/hoge_fuga.git　※ Githubの場合	<br>http://qiita.com/gonshi_com/items/de7f2a70e096cdeeb280</p>
<p>git remote set-url bluemix https://hub.jazz.net/git/ailes/Ailes.1　※ bluemixの場合</p>
<p>git remote set-url heroku https://git.heroku.com/hogehoge-tor-7235.git　※ herokuの場合</p>
<p>※実行した後は、git remote -vで正しく変更されたか確認する。</p>

<p>・今どのブランチ上にいるかを確認<br>git branch</p>
<p>・コミットログを閲覧する<br>git log</p>
<p>・変更が加えられたファイルを表示する(差分の変更を確認できる)<br>git status</p>

<p>・ブランチの一覧を表示<br>git branch -a</p>

<p>・ブランチを削除<br>git branch -d ブランチ名　※例) git branch -d feature/add-readme-dive
<br>※ git branchで削除されたかを確認<br>※ その後、git pull(pullは差分更新という意味、最新の情報を取得する)<br>※ HEAD にマージされていないコミットがある場合、ブランチを削除できません。 マージされていないコミットがあるブランチを強制的に削除するには、 -D オプションを付けて実行します。</p>

<p>・ブランチを切り替える<br>git checkout ブランチ　※ 例) git checkout develop</p>

<p>・GithubへのPullRequest方法(pullは差分更新という意味)<br>http://qiita.com/samurairunner/items/7442521bce2d6ac9330b</p>

<p>・前回のコミットから今回登録された内容の差分を確認<br>git diff HEAD^ HEAD --stat</p>



<h1>git flowについて</h1>
<h2>git flowのインストール(使わない？)</h2>
https://teachme.jp/contents/351524
<h2>チーム開発(Git-Flowリーダー編)</h2>
https://teachme.jp/contents/412048

<h2>git flow 流れ</h2>

<p>※ git flow導入の前に、先にGitHubにリポジトリを作ること</p><p>下記作業の前に、以下URLの作業を行う！！<br>
GitをGithubへ連携させる(1回目、個人用リポジトリの作成)<br>
</p>
https://teachme.jp/contents/350411

<p>※ 作業はgitHub上にMilestone(期間を設定、P102)、Issueを登録してから行うこと！！<br>
READMEはGitHubのリポジトリを作成した最初に書くか、もしくはNitrousのREADMEファイルに書く。やり方はテキストに書いてある。
</p>

参考サイト
http://www.atmarkit.co.jp/ait/articles/1401/06/news013.html
<h4>[チームの場合]</h4>
<p>1. 招待メールが届く。リンクをクリックしてGitHubページに移動する。</p>
<p>2. リンク先の、SSH内の文をコピーする。コピーしたら、Nitrousのカレントディレクトリがcodeの状態でクローンする。<br><br>git clone コピーしたSSH文 + Enter<br><br>を実行する。<br>※git cloneコマンドを実行してリモートリポジトリと同じものを自分のローカルリポジトリに複製する。</p>

<p>3. git flowをインストールする(cloneしたアプリのカレントディレクトリで)<br><br>
sudo apt-get install git-flow<br>を実行する。<br>コンソールに「git flow」コマンドを入力。実行しusage: git flow...と入力されていたら、正常にインストールが完了されている。</p>

<p>4. git flowの初期設定を行う(cloneしたアプリのカレントディレクトリで)<br>
git flow init -d<br><br>※ git flowの初期設定が終わるとdevelopブランチが作成され、developブランチ上に移動した状態になる。基本的にgit flowではdevelop上でアプリを開発していく。
</p>

<p>5. GitHub上にdevelopブランチを作成する(masterブランチは、最初にGitHubリポジトリを作った時点で送付されている)<br>git push -u origin develop</p>

<p>６. featureブランチを切る(featureブランチはdevelopブランチから切る)<br>例)<br>git checkout develop　※developブランチに移動する<br><br>※ git flow feature start ブランチ名<br>git flow feature start add-readme-tanaka<br>git flow feature start add-user</p>

<p>6. 作業を始める → 作業終了後<br>git add -A<br>git commit -m "my profile"</p>
<p>7. コミットしたら、次にリモートリポジトリにプッシュする<br>git push -u origin feature/add-readme-tanaka<br>※ このコマンドを実行するだけで、GitHub上にfeatureブランチができる。<br><br>※ GitHub上にmasterブランチを作成する場合<br>git push -u origin master<br>※ developブランチを作成する場合<br>git push -u origin develop</p>

<p>8. プッシュしたらGitHubでプッシュできているか確認する。</p>

<p>9. 自分のブランチがあることを確認したらプルリクエストを実行する。プルリクエストを実行することで、本当に自分が開発した機能や修正したもの、追記したものをdevelop(大元のブランチ)にマージしていいか確認することができる。プルリクには何を行ったのか詳細に書くようにする。見出しのフォーマットは変えずに、見出し移行に追記していく形になる。<br><br>
・送付したブランチを選択する (master → feature/add-blog)<br><br>
・左側が送ったブランチ名になっていることを確認して、<br>
[ Compare & pull request ] をクリックする<br><br>
・base:develop ・・・compare: feature/add-blog<br><br>
・タイトルと内容を入力して、<br>
[ Create pull request ] をクリックする<br><br>
※あとはこちらを他のメンバーに見てもらい、masterにマージしてもらうか、修正点があれば、さらにコミットしてpushするなどをしするなどをして、developやmasterブランチに取り入れてもらう。
</p>

<p>10. プルリクが作成されると開発者がプルリクエストを確認して、マージするか判断する。</p>
<p>11. 最後に不要になったfeatureブランチを削除する。 P15<br>git checkout develop<br>git branch -d feature/add-readme-tanaka　※ git branch -d ブランチ名</p>
<p>12. GitHub上のdevelopに反映された作業内容を手元のgitのdevelopブランチにも反映させるためにdevelopブランチへ移動する。<br>git checkout develop<br>※ [STEP1]Git flowのインストール8/9ページ</p>

<p>13. GitHub上のdevelopに反映された作業内容を手元のgitのdevelopブランチにも反映させる(pullして最新の情報を取得する)。最新の状態にしないでpushをしようとすると、他のメンバーがすでにpushしていた際にpushできないことがある<br>git pull　※ 該当のブランチで行う<br><br>ブランチ作業中に、当該ブランチのみに更新分を反映させたいときは、<br>
git pull origin ブランチ名 <br><br>※ [STEP1]Git flowのインストール8/9ページ</p>

<p>14. releaseブランチを作成する<br>developブランチでの開発が終了し、アプリをリリースする段階になると、releaseブランチを作成する。<br>※ releaseブランチでは、リリースに向けた作業を行っていく。基本的には細かいドキュメントの修正やバグフィックスを行う。準備が終わってリリースする際には、リリースブランチをmasterブランチへマージし、リリースタグを打つ。これにより、リリース時のソースコードを確定します。git-flowのブランチモデルでは、masterブランチにコミットを行わない。そのため、masterブランチを見れば、リリースしたコードの状態が把握できるようになっている。また、releaseブランチで作業した内容を、同時にdevelopブランチにもマージし、最新の開発版に反映させる。これにより、リリース時に行ったバグ修正のdevelopブランチへの反映漏れを防ぐことができる。<br><br>git flow release start v1.0　※developブランチから作成する<br><br>

リリースに向けた作業を行う。細かいドキュメントの作成やバグフィックスなど。<br>作業終了後、<br>
↓<br>
masterブランチへマージする。リリースタグを打つ。<br>
↓<br>
releaseブランチで作業した内容を、同時にdevelopブランチにもマージする。developブランチを最新の開発版に反映させる。<br>
作業終了後、<br>
git push -u origin release / v1.0<br>
↓<br>
送付したブランチを選択する(master→release)<br>
masterブランチにPull Requestを行う。OKが出ればマージされる。<br>
↓<br>
releaseブランチで作業した内容を、developブランチにもPull Request、OKがあればマージされる。
</p>
<p>・hot fixブランチの作成<br>git flow hotfix start v1.0.1　※ masterブランチから作成する</p>

<p>・Herokuにプッシュする場合(git push heroku master)は、GitHubでmasterブランチにマージした後、Nitrousのブランチをgit checkoutでmasterに変える。<br>
↓<br>
その後、git pullをする。<br>
↓<br>
その後、git push heroku master、を行う。
</p>

**[重要]GitHubで行う作業**
git push --forceで強制的にブランチにpushすることを防ぐには、
1. 該当するリポジトリに移動してsettingをクリックする。
2. Branches
3. ・Protect this branchをチェック
4. ・require status checks to pass before mergingにもチェック
※ これで開発責任者以外の人たちによる強制プッシュを防ぐことができる。


<h2>git flowポイント</h2>
<p>・featureブランチとreleaseブランチは、developブランチから作成される</p>
<p>・hotfixブランチは、masterから作成される。</p>

<h2>git flow コマンド</h2>

<p>・featureブランチの作成 (developブランチからブランチを切る)<br>git flow feature start ブランチ名　※ git flow feature start add-readme-tanaka</p>

<p>・git-flowで使えるコマンドを確認する<br>git flow</p>