ゆるおたノート

Tomorrow is another day.

【Git勉強中】自分のコミット履歴を提出する

開発用のブランチで編集・コミットが完了したら、本丸のmasterブランチにも反映させます。

はじめに

基本の流れ

www.yuru-wota.com

凡例

記号・用語 意味 使い方
$ 「"コマンドライン"で使えるコマンド」のしるし。
通常、Gitを始めとする「シェルスクリプト」系の説明では、コマンドの文頭に$をつけて表現されることが多いようです。当ブログでもそれに倣って記載してます。
実際にコマンドを入力するときは、git~以下をコピペしてください。
# コメント 補足事項など。
(対話モードでは使えません、、、)
<> 編集点(という表現で良いのかな…?) 任意の名前、識別子を入力してください。
(コミットの)識別子 コミットごとにつく半角英数字7桁の番号。
SHA-1というハッシュ値らしいです。
当記事では<コミット>のことを指します。

マージ

ブランチで編集が出来たら、一旦ローカルリポジトリmasterブランチに反映させます。

お互いの履歴やマージの記録自体も残しつつ、マージする

--no-ffオプションを指定してFast-Forwardとさせないことで、マージの履歴も含めて記録させます。
詳細はこちらの41ページあたりから。

$ git merge --no-ff <コミット履歴のあるブランチ>

プッシュ

ローカルリポジトリで編集が終わったら、リモートリポジトリにも情報を反映させます。

同名のブランチにプッシュ

$ git push <リモートリポジトリ> <ローカルブランチ>
【例】

ローカルリポジトリmasterブランチから、リモートリポジトリoriginの同名ブランチ(=master)にコミット履歴をプッシュ。

$ git push origin master

ブランチ名を指定してプッシュ

リモートリポジトリでもブランチが切られている場合など、プッシュ先のブランチを指定する場合は、末尾に:<リモートブランチ>と付け加えます。

$ git push <リモートリポジトリ> <ローカルブランチ>:<リモートブランチ>
【例】

ローカルリポジトリmasterブランチから、リモートリポジトリoriginbranch1ブランチにコミット履歴をプッシュ。

$ git push origin master:branch1

強制的にプッシュして上書き

そのままプッシュするとリモートリポジトリの履歴とコンフリクトしてしまう場合など、どうしてもプッシュ元の情報を反映させたい時のみ-fオプションを使用します。

$ git push -f <リモートリポジトリ> <ローカルブランチ>
$ git push --force <リモートリポジトリ> <ローカルブランチ>

【例】ここまでのまとめ

# [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

参照

マージ

www.slideshare.net git-scm.com

プッシュ

www-creators.com