開発用のブランチで編集・コミットが完了したら、本丸のmaster
ブランチにも反映させます。
はじめに
基本の流れ
Git自体はじめての方は、まずはこちらからどうぞ。
【Git勉強中】操作に慣れてきたので、流れを整理してみました。 - ゆるおたノート
凡例
記号・用語 | 意味 | 説明 |
---|---|---|
$ |
「コマンドライン」で使えるコマンド | 通常、Gitを始めとする「シェルスクリプト」系の説明では、コマンドの文頭に$ をつけて表現されることが多いようです。当記事でもそれに倣って記載しています。 実際にコマンドを入力するときは、 git~ 以下をコピペしてください。 |
# |
コメント | 補足事項など。 (対話モードでは使えません、、、) |
<> |
編集点(という表現で良いのかな…?) | 任意の値(名前、識別子など)を入力してください。 |
(コミットの)識別子 | コミットごとに付与される半角英数字7桁の番号。 | SHA-1というハッシュ値だそうです。 当記事では <コミット> と表記します。 |
▼マージ
ブランチで編集が出来たら、一旦ローカルリポジトリのmaster
ブランチに反映させます。
【A】お互いの履歴やマージの記録自体も残しつつ、マージする場合
[書き方]
--no-ff
オプションを指定してFast-Forward
とさせないことで、マージの履歴も含めて記録させます。
$ git merge --no-ff <コミット履歴のあるブランチ>
Fast-Forward
の意味については、こちらの41ページあたりが参考になりました。
[例]
master
ブランチとdevelop
ブランチの両方の履歴を残します。
# masterブランチに居る状態で… $ git merge --no-ff develop
【B】一方の内容のみmasterブランチへ反映させる場合
[書き方]
【A】に対し、--ff
でFast-Forward
と指定して、片方の編集内容のみ残します。
$ git merge --ff <コミット履歴のあるブランチ>
ただし、merge
される側にも編集履歴があると、「コンフリクト」した状態になるためマージできません。
※この場合は、いったん編集履歴を破棄してから受け入れるか、--no-ff
で両方を残すかになると思います。
[例]
master
ブランチにdevelop
ブランチの履歴をコピーします。
# masterブランチに居る状態で… $ git merge --ff develop
▼プッシュ
ローカルリポジトリで編集が終わったら、リモートリポジトリにも情報を反映させます。
【A】同名のブランチにプッシュする場合
[書き方]
これで編集履歴を<ローカルブランチ>
から<リモートリポジトリ>
に送る、という意味になります。
$ git push <リモートリポジトリ> <ローカルブランチ>
[例]
ローカルリポジトリのmaster
ブランチから、リモートリポジトリorigin
の同名ブランチ(=master
)にコミット履歴をプッシュ。
$ git push origin master
【B】ブランチ名を指定してプッシュする場合
[書き方]
リモートリポジトリでもブランチが切られている場合など、プッシュ先のブランチを指定するときは、末尾に:<リモートブランチ>
と付け加えます。
$ git push <リモートリポジトリ> <ローカルブランチ>:<リモートブランチ>
[例]
ローカルリポジトリのmaster
ブランチから、リモートリポジトリorigin
のbranch1
ブランチにコミット履歴をプッシュ。
$ git push origin master:branch1
【C】強制的にプッシュして上書きする場合
[書き方]
そのままプッシュするとリモートリポジトリの履歴とコンフリクトしてしまう場合など、どうしてもプッシュ元の情報を反映させたい時のみ、-f
オプションを使用します。
$ git push -f <リモートリポジトリ> <ローカルブランチ>
$ git push --force <リモートリポジトリ> <ローカルブランチ>
[例]
ローカルリポジトリのmaster
ブランチの内容で、リモートリポジトリorigin
の同名ブランチを強制的に上書き。
$ git push -f origin master
▼ここまでのまとめ
ここまでの操作をまとめると、以下の流れになります。
[例]
# [develop]ブランチに移動 $ git checkout develop # ~ 編集 in [develop]ブランチ ~ # 今回の編集内容をまとめてステージに上げる $ git add -A # 一旦ステージの状態を確認 $ git status # 問題がなければコミットする $ git commit -m 'test.' # ここまでのコミット履歴を確認 $ git log # 問題がなければ[master]ブランチに移動 $ git checkout master # [develop]ブランチの履歴を[master]ブランチに反映する $ git merge --no-ff develop # 今回のコミット履歴をリモートリポジトリ[origin]の[master]ブランチに反映する $ git push origin master
このシリーズについて
Gitのコマンドについて、勉強しつつ記事にまとめています。
誤り、分かりづらい等ありましたら、ぜひコメント欄やTwitter、お問い合わせフォーム等でご教示ください!
次回
連載目次
- 【Git勉強中】操作に慣れてきたので、流れを整理してみました。 - ゆるおたノート
- 【Git勉強中】ブランチの移動を使い分けたい - ゆるおたノート
- 【Git勉強中】ステージに上げたり下げたり。 - ゆるおたノート
- 【Git勉強中】ステージした変更を記録する - ゆるおたノート
- 【Git勉強中】あっ!そのコミット訂正させてください! - ゆるおたノート
- 当記事【Git勉強中】自分のコミット履歴を提出する - ゆるおたノート
- 【Git勉強中】リポジトリの作成と接続 - ゆるおたノート
参照
マージ