【Git】プルリクエスト リベース版 簡易ポケットリファレンス

最近現場では プルリクエストによる開発が当たり前になっています。

また、マージではなくリベースによる管理が主流になっています。

marge と rebase の違いは置いといて、手順を忘れやすい方向けに手順をまとめました。

細かいコマンドやオプションに関しては他のサイトにてご確認ください。

作業環境の構築

プロジェクトのクローン

まずは修正するプロジェクトをローカルへクローンしましょう。

git clone git@gexample.com:TestProject/test_project.git

プロジェクトディレクトリへ移動

クローンしたフォルダへ移動します。

cd test_project.git

ブランチを確認

現在のブランチの状態を確認します。(必須ではありません)

git branch -a

リモートの 「develop」をローカルへ取得

今回は「develop」ブランチに対して修正をする場合です。マスターの場合は「master」になるでしょう。

ローカル編集用に 「origin/develop」 をコピーして 「develop」 をローカルに作成。

git checkout -b develop origin/develop

※ origin とは、リポジトリのURL
※ ローカルにリモートと同じ名前のブランチ「develop」を作成してプッシュすればリモートの「develop」にプッシュされる。

取得した「develop」ブランチを 「feature/develop_top」として作成

今回は、「feature」というディレクトリを切ってその直下にブランチを作成します。

ローカルの「develop」をコピーして「feature/develop_top」を作成。

git checkout -b feature/develop_top develop

※ ローカルに「develop」ブランチが作成されていることが必須。

プログラムの修正

プログラムを修正します。

vi test1.txt
vi test2.txt

ステージングへ追加
git add test1.txt test2.txt

コミット
git commit

プッシュする前に rebase しよう!

「develop」へブランチへ切り替え

ローカルの「develop」環境の情報を更新するためにいったん「develop」へ切り替えます。

git checkout develop

「develop」の情報を最新へ更新

リモートブランチから最新の情報だけを取得する場合(情報だけなのでマージする場合はPull等も必要)

git fetch origin develop

リモートブランチからプルではなくリベースで取り込む場合(rebase によるマージもされる)

git pull --rebase origin develop

develop ブランチを更新していない場合は pull でも問題なし。
git pull origin develop

「feature/develop_top」へブランチへ切り替え

再び先程修正したブランチへ移動します。

git checkout feature/develop_top

「develop」から更新分を取り込む

「feature/develop_top」で更新中に他の人が更新してリモートの「develop」へ取り込まれた修正分を「feature/develop_top」へ取り込みます。

git rebase develop

リベース時にコンフリクトした場合

コンフリクトしたファイルを修正

vi test1.txt

コンフリクトで修正したファイルをステージングへ追加

git add test1.txt

リベースを続ける

git rebase --continue

コンフリクトが続いた場合

直したファイル数分繰り返す

vi test2.txt

git add test2.txt

git rebase --continue

リベースをやめて、rebase する前の状態へ戻す。

git rebase --abort

リベースが正常に終了したら

リベースでプログラムを取り込んだ「feature/develop_top」が正常に動作することを確認しましょう。

リベース後の内容をプッシュする。

「feature/develop_top」ブランチをリモートへプッシュします。

git push origin feature/develop_top

プルリクエストを作成する

GitHubなどの管理画面からプルリクエストを作成してください。

おまけ

コミットを忘れたファイルがある場合の対応方

忘れたファイルを修正、add してから
git commit --amend

コミット取り消し。一つ前。

ステージングまで取り消し
git reset --soft HEAD^

ステージングも取り消し
git reset HEAD^

stash

pull 、 rebase をしたい時に変更がありできない場合

変更内容を一時的に退避する

git stash save
git stash
git stash save "メッセージを記録する場合"

最後に退避した stash を戻す。履歴は削除

git stash pop
git stash pop stash@{0}

退避したリストを確認

git stash list

退避したリストと内容を表示

git stash list -p

stashを指定して退避したファイルを表示

git stash show stash@{0}

stashを指定して退避したファイルと内容を表示

git stash show  -p stash@{0}

stashを指定して退避した内容を戻す。更に stash は残す

git stash apply
git stash apply stash@{0}

stashを指定して退避したstashを削除

git stash drop
git stash drop stash@{0}

最後に

以上、一度はやったことはあるが、毎回覚えられない方向けに手順書を作成しましたのでご利用ください。

フォローする