ゆるおたノート

Tomorrow is another day.

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

開発用のブランチで編集・コミットが完了したら、本丸の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】に対し、--ffFast-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ブランチから、リモートリポジトリoriginbranch1ブランチにコミット履歴をプッシュ。

$ 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勉強中】リポジトリの作成と接続 - ゆるおたノート

連載目次

  1. 【Git勉強中】操作に慣れてきたので、流れを整理してみました。 - ゆるおたノート
  2. 【Git勉強中】ブランチの移動を使い分けたい - ゆるおたノート
  3. 【Git勉強中】ステージに上げたり下げたり。 - ゆるおたノート
  4. 【Git勉強中】ステージした変更を記録する - ゆるおたノート
  5. 【Git勉強中】あっ!そのコミット訂正させてください! - ゆるおたノート
  6. 当記事【Git勉強中】自分のコミット履歴を提出する - ゆるおたノート
  7. 【Git勉強中】リポジトリの作成と接続 - ゆるおたノート

参照

マージ

こわくない Git Git - git-merge Documentation

プッシュ

git push コマンドの使い方と、主要オプションまとめ | WWWクリエイターズ