TOWERからGithubへのPullRequest方法

GUIでGit管理が出来る「TOWER」で、GithubへPush,PullRequestを作成する流れをまとめてみました。


#ローカルリポジトリとリモートリポジトリの関係と用語整理
Push…ローカルリポジトリの編集内容をリモートリポジトリに反映させるために、編集内容をローカルからリモートに押し出すこと


PullRequest… リモートにPushした編集内容を他のリモートリポジトリ管理者に受け取ってもらうようにリクエストを送ること


Fetch…  リモートリポジトリの更新内容をローカルに反映すること
![スクリーンショット 2014-12-19 6.37.13.png](https://qiita-image-store.s3.amazonaws.com/0/48577/8067d1ac-c0dd-0632-cf5f-745e81b37756.png)



#ブランチの仕組み
先程のリモートやローカルなど、１つリポジトリの中に複数のブランチを所持することが出来る。ブランチ名は、自由に決定することが出来る。一般的に[master]ブランチは、本番用のファイルが管理されていて、[develop]ブランチでは編集過程のものが管理されている。それらの命名規則や管理規則はチームごとに共有することが必要。


１つブランチには、編集エリア・ステージングエリア・本番エリアの３つエリアからなり、ローカルリポジトリのブランチでは、ある程度、編集を行った単位でadd、そしてcommitでブランチの本番ステージに移行させたものが、ブランチに反映されたことになる。

![スクリーンショット 2014-12-19 6.38.29.png](https://qiita-image-store.s3.amazonaws.com/0/48577/5c9fc04e-482f-cc93-1b5d-2090d52bed29.png)

これらのブランチ単位で、PushやPullRequest、Merge(合併)を行い、リポジトリの更新を行う。
参考：http://www.backlog.jp/git-
参考：guide/stepup/stepup1_4.htmlhttp://blog.qnyp.com/2013/05/28/pull-request-for-github-beginners/

#大まかな流れ
①Github上からローカルにファイルをclone(保存)する
②GithubへPullRequest用のBranchをローカルで作成する
③データを更新編集し、ローカルに add, commitする
④Githubにpushする
⑤GithubにPullRequestする
※⑥PullRequestをMergeする

#１Github上からローカルにファイルをclone(保存)する
①Github上からローカルにファイルをclone(保存)する
Githubの編集したいレポジトリからClone用のURLをコピーし、TOWER上「Clone」をクリックし貼付ける、cloneが作られる。
![スクリーンショット 2014-12-19 6.39.26.png](https://qiita-image-store.s3.amazonaws.com/0/48577/4878f6d9-b376-22d5-e805-e3d67121c853.png)

②PullRequest用のBranchをローカルで作成する
該当するレポジトリに移動する。リモートリポジトリと同じ名前の、「pullreq」レポジトリが作られているのがわかる。
![スクリーンショット 2014-12-17 23.51.11.png](https://qiita-image-store.s3.amazonaws.com/0/48577/25e957de-1ac8-70fd-00fb-b8f75e220af1.png)



③更新したい部分を編集し、ローカルに add,そして commitする
中段のBRANCHESの中で、最初から「master」ブランチが作られていいて、HEAD指定されているのがわかる。　これは、ローカルの中の「master」ブランチに更新を取り込もうとしているということである。SublimeTextなどでファイルを編集をすると、一番上のWorking Copy内に編集履歴が取り込まれる。編集箇所は、下半分のStatusのチェックボックスの箇所である。チェックを入れてから編集タイトルと編集内容を入れて、commitをクリック。

![スクリーンショット 2014-12-19 6.41.59.png](https://qiita-image-store.s3.amazonaws.com/0/48577/ce105ced-5ba6-0d4d-b643-754a8c38755c.png)

BRANCHESのHEADに指定されている!
[スクリーンショット 2014-12-19 6.42.52.png](https://qiita-image-store.s3.amazonaws.com/0/48577/4247cc94-c04a-a4a6-6e1e-310b4b169463.png)

「master」内に「Towerから編集しました」という編集履歴が取り込まれているのがわかる。
![スクリーンショット 2014-12-19 6.52.57.png](https://qiita-image-store.s3.amazonaws.com/0/48577/e311ef99-68b8-2fdb-b68d-78da3af8102d.png)


④Github(リモート)にpushする
今回更新した「master」ブランチを、更新を上書きしたいREMOTEのBRANCHにドラッグ&ドロップする。今回は、「origin/develop」ブランチにPushする。
![スクリーンショット 2014-12-19 6.53.55.png](https://qiita-image-store.s3.amazonaws.com/0/48577/932b17af-0732-9e19-bac4-7a9e813ef29d.png)


#⑤GithubにPullRequestする
Githubのpullreqレポジトリへ移動すると、先程のpushしたdevelop BRANCHに
「Compare&pull request」という緑色のボタンが現れているのでクリック。
![uploading スクリーンショット 2014-12-19 6.50.42.png...]()


編集タイトルと内容を記入し、一番上の
「base:master▼」…「compare:develop▼」を確認する。これは、
ローカルのmasterブランチとリモートのdevelopブランチにとの比較を表すことを指している。間違っている場合は、Editから編集する。
![スクリーンショット 2014-12-19 6.48.23.png](https://qiita-image-store.s3.amazonaws.com/0/48577/8a3dab53-ff99-225a-d23d-3b833a8131e3.png)


編集内容の確認もできる
![スクリーンショット 2014-12-19 6.48.18.png](https://qiita-image-store.s3.amazonaws.com/0/48577/8b3ae16d-3c12-b2dd-e6f1-041012bd8852.png)



#※⑥PullRequestをMergeする
編集が問題なかった場合、pullreqレポジトリに現れる「Merge pull request」の緑色のボタンをクリック。
![uploading スクリーンショット 2014-12-19 6.48.10.png...]()


編集内容が反映されるのがわかる。
![スクリーンショット 2014-12-19 6.47.01.png](https://qiita-image-store.s3.amazonaws.com/0/48577/8d61634a-1ded-39bc-1bc6-a1e1c49ac288.png)


※編集前!
[uploading スクリーンショット 2014-12-19 6.47.01.png...]()