背景
チーム開発を進めるにあたって、リモートのブランチを反映させたり、編集中の内容を別ブランチに移動したりする必要が出てきたため、備忘録的にまとめることとした。
リモートブランチをチェックアウトする
・最新の情報を取得する
$ git fetch
・リモートブランチの一覧を表示する
$ git branch -r
・リモートブランチをローカルブランチにチェックアウトする
(リモートとローカルのブランチ名は合わせるのが一般的)
$ git checkout -b [local branch name] origin/[remote branch name]
・【補足】ローカルにリモートと同じ名前のブランチがない場合、下記でもチェックアウト可能
$ git checkout [remote branch name]
ローカルブランチを削除する
・現在のブランチを削除することはできないので、削除する対象以外のブランチに切り替える(checkoutやswitch)
$ git checkout [other branch]
・ブランチを削除する
(リモートブランチにpushおよびmerge済みの場合のみ削除が実行される)
$ git branch -d [target branch]
・強制的に削除したい場合は、-Dオプションを使用する
$ git branch -D [target branch]
現在の変更内容を別のブランチに移動する
・正しいブランチに変更を移動する方法は、移動したい変更の状態によって対処方法が異なるため、事前に確認する
$ git status
変更が作業ツリー(git addの前)にある場合
・Changes not staged for commit欄(新規作成の場合はUntracked files欄)にファイルの変更が登録されていることを確認
・現在(変更を無かった事にしたい)ブランチで作業ツリー上の変更を退避する
$ git stash save
・【補足】退避できていることを確認する場合は下記を実行
$ git stash list
・変更を適用したいブランチに移動する
$ git checkout [target branch]
・退避した変更を正しいブランチに反映させる
$ git stash pop
変更がステージ(git addの後)にある場合
・Changes to be commited欄(新規作成の場合はUntracked files欄)にファイルの変更が登録されていることを確認
・ブランチのステージ上の変更をHEADの状態に戻す
$ git reset HEAD
#ファイル名を指定する場合
$ git reset HEAD -- [file name]
・以降「変更が作業ツリー(git addの前)にある場合」と同手順
変更がコミット済の場合
・ログを表示して戻したいコミットを確認
$ git log --oneline [wrong branch]
・正しいブランチに移動する
$ git checkout [target branch]
#未作成の場合は作成する
$ git checkout -b [target branch]
・変更内容を正しいブランチにマージする
(上記でブランチを新規作成した場合は作業不要)
$ git merge [wrong branch]
・コミットを削除する
$ git reset --hard HEAD[number to delete]
#[]内はログで確認した削除したい数のコミット数を数字入力
コメント