🐷

Gitブランチのオペレーションズ(作成・削除・リネーム)

2022/02/28に公開

Gitのブランチ管理

バグ対応のhotfixや新規機能のfeatureはmainブランチを切って対応するのは一般的です。
ブランチの操作に関して、少しまとめました。

ローカルのブランチ

ブランチ作成

前提条件

$ git branch -av
* main                   f2113c7 first commit
  remotes/origin/develop 7ec725e commit1
  remotes/origin/main    f2113c7 first commit

HEADからブランチを新規作成

$ git branch develop

$ git branch -av
  develop                f2113c7 first commit
* main                   f2113c7 first commit
  remotes/origin/develop 7ec725e commit1
  remotes/origin/main    f2113c7 first commit

リモート側にブランチがある場合

$ git checkout develop
Switched to a new branch 'develop'

$ git branch -av
* develop                7ec725e commit1
  main                   f2113c7 first commit
  remotes/origin/develop 7ec725e commit1
  remotes/origin/main    f2113c7 first commit

リモート側にブランチがない場合

HEADからブランチを作成

$ git checkout -b test
Switched to a new branch 'test'

$ git branch -av
  main                   f2113c7 first commit
* test                   f2113c7 first commit
  remotes/origin/develop 7ec725e commit1
  remotes/origin/main    f2113c7 first commit

特定のブランチからブランチを作成

  1. ローカルブランチから
$ git checkout -b test develop
Switched to a new branch 'test'
  1. リモートブランチから
$ git checkout --no-track -b test remotes/origin/develop
Switched to a new branch 'test'
Branch 'test' set up to track remote branch 'develop' from 'origin'.

ブランチをプッシュして、origionブランチをセットする

  $ git push --set-upstream origin test
  Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
  remote: 
  remote: Create a pull request for 'test' on GitHub by visiting:
  remote:      https://github.com/gekal-study-tools/git-branch-operations/pull/new/test
  remote:
  To https://github.com/gekal-study-tools/git-branch-operations.git
  * [new branch]      test -> test
  Branch 'test' set up to track remote branch 'test' from 'origin'.

  $ git branch -avv
    develop                7ec725e [origin/develop] commit1
    main                   f2113c7 [origin/main] first commit
  * test                   7ec725e [origin/test] commit1
    remotes/origin/develop 7ec725e commit1
    remotes/origin/main    f2113c7 first commit
    remotes/origin/test    7ec725e commit1

ブランチ削除

$ git branch
  develop
* main

# ブランチ削除
$ git branch -d develop
warning: deleting branch 'develop' that has been merged to
         'refs/remotes/origin/develop', but not yet merged to HEAD.
Deleted branch develop (was 7ec725e).

$ git branch
* main
オプション 説明
-d, --delete delete fully merged branch
-D delete branch (even if not merged)

ブランチ名変更


$ git checkout -b test1
Switched to a new branch 'test1'

$ git branch
  main
* test1

# ブランチ名変更
$ git branch -m test2

$ git branch
  main
* test2

リモートのブランチ

ブランチ作成

$ git branch -a
* test2
  remotes/origin/develop
  remotes/origin/main

# ローカルのブランチを準備する
$ git checkout -b test
Switched to a new branch 'test'

# リモート側のブランチを作成する
$ git push origin test
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'test' on GitHub by visiting:
remote:      https://github.com/gekal-study-tools/git-branch-operations/pull/new/test
remote:
To https://github.com/gekal-study-tools/git-branch-operations.git
 * [new branch]      test -> test

$ git branch -av
  main                   f2113c7 first commit
* test                   f2113c7 first commit
  remotes/origin/develop 7ec725e commit1
  remotes/origin/main    f2113c7 first commit
  remotes/origin/test    f2113c7 first commit

ブランチ削除

# リモート側のブランチを削除する
$ git push origin :test
To https://github.com/gekal-study-tools/git-branch-operations.git
 - [deleted]         test

リモートとローカルの同期

リモートリポジトリの変更内容を取り込む

# リモートのブランチからローカルのOriginブランチに同期
$ git fetch
# リモートのブランチからローカルのOriginブランチに同期してから、ローカルブランチにマージ
$ git pull

削除されたリモートブランチにもローカルにも削除

# リモートブランチのステータスを確認
$ git remote show origin
# ローカルのOriginブランチをクリア
$ git remote prune origin

Discussion