ブランチをちょっとだけ使いこなす。
リモートに存在しないブランチを手元で作ってプッシュするまでの流れ。
レポジトリを持ってくる。
takuya@Desktop$ git clone git@example.com.:takuya/sample.git
takuya@Desktop$ cd sample/
現在のブランチを確認する。
リモートブランチを含め、現在あるブランチを確認する。
takuya@sample$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
ブランチを作成する。
ブランチを作成する(今回はリモートのmaster からブランチを作成)
takuya@sample$ git checkout -b サンプルブランチ origin/master
Branch 'サンプルブランチ' set up to track remote branch 'master' from 'origin'.
Switched to a new branch 'サンプルブランチ'
ブランチが切られていることを確認する。
ブランチが切られていることを確認する。
takuya@sample$ git branch -a
master
* サンプルブランチ
remotes/origin/HEAD -> origin/master
remotes/origin/master
takuya@sample$ touch index.php
takuya@sample$ git add .
ローカルブランチへコミットする。
ブランチに変更を加えてみる。
takuya@sample$ git commit -m '作ったブランチへコミット'
[サンプルブランチ d5e9ee2] 作ったブランチへコミット
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index.php
takuya@sample$ git push
Everything up-to-date
リモート(origin) にブランチを転送する。
コミットが出来たら、リモートに「ブランチ」を送信する。このときにリモートブランチが作成される。
takuya@sample$ git push origin サンプルブランチ
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 294 bytes | 294.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for サンプルブランチ, visit:
remote: https://example.com/takuya/sample/merge_requests/new?merge_request%5Bsource_branch%5D=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81
remote:
To example.com:takuya/sample.git
* [new branch] サンプルブランチ -> サンプルブランチ
ローカルブランチの状態を確認する。
remotes/origin/サンプルブランチ
として、リモート(origin) にさっきのブランチが追加されてる。
これで、ローカルにあるブランチからリモートブランチ(新規作成)が出来たことが解る。
takuya@sample$ git branch -a
master
* サンプルブランチ
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/サンプルブランチ
ブランチが出来たら、マージ
ブランチが出来たら、次はマージするのですが、マージ作業をブラウザで出来るのがgithub のプルリクの強みだったりするのでいいよね。
ブランチ間のマージ
マージするときは master にマージしていくのが基本方針として、ブランチでの作業が少し進んでいる状態をmaster にマージする感じ。
master をチェックアウトして
takuya@sample$ git checkout master
サンプルブランチを取り込む
takuya@sample$ git merge サンプルブランチ
Updating 460e6a0..2bf15e1
Fast-forward
bashrc | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bashrc
取り込んだ、マージをリモートに送信する。
takuya@sample$ git push
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
ローカルブランチを削除する。
takuya@sample$ git branch -d サンプルブランチ
Deleted branch サンプルブランチ (was 2bf15e1).
必要がなくなったリモートのブランチを消す。
リモートにブランチを削除するpush をする。
takuya@sample$ git push --delete origin サンプルブランチ
To example.com:takuya/sample.git
- [deleted] サンプルブランチ
まとめ
ローカルでブランチを作って、ブランチを送信できる
ブランチをマージするのは手元でやるのが基本。サーバー側でまとめて出来るのがgithub の魅力
リモートのブランチへの削除push が出来る
これで、帰宅時間が来たら帰宅時間ブランチを作ってpushすれば良いことが解る。
参考資料
ちょっと進んだGit, Githubの使い方~ブランチ活用編~ - nigoblog