🟨

[git]ローカルリポジトリでブランチを新規作成

2024/05/26に公開

特定のブランチ(develop)から分岐する新しいブランチの作成

  1. ローカルの対象ブランチ(develop)に移動
    $ git checkout develop(branch-name)

  2. リモートリポジトリ(origin)から最新のコミット(変更)履歴を取り込む
    $ git fetch <remote-name> <branch-name>
    (リモートリポジトリから最新の変更を取得して、ローカルのリモートトラッキングブランチを更新)
    $ git pull origin(remote-name) develop(branch-name)
     (リモートの対象ブランチの変更を取得し、ローカルの対象ブランチにマージする)

  3. 現在checkoutしている対象ブランチ(develop)のコミット履歴を継承した新しいブランチの作成
    $ git switch -c <new-branch-name>

  4. ローカルリポジトリで作成した新しいブランチをリモートリポジトリに追加
    $ git push -u origin(remote-name) <new-branch-name>
    • オプション: -u (新規作成したローカルブランチとリモートブランチを「追跡関係」にする

$ git checkout

ブランチの切り替え、特定のファイルやコミットのチェックアウトなど、複数の機能を持つコマンド。
複数の機能を持つため、柔軟に使える一方で少し複雑です。

  • 既存ブランチの切り替え:
    $ git checkout <branch-name>
    <branch-name>: 切り替えたいブランチの名前。
  • 新しいブランチの作成と切り替え:
    $ git checkout -b <new-branch-name>
    <new-branch-name>: 作成する新しいブランチの名前。
    • オプション: -b (新しいブランチを作成して切り替える)
  • 特定のコミットのチェックアウト:
    $ git checkout <commit-hash>
    <commit-hash>: チェックアウトしたいコミットのハッシュ。
  • 特定のファイルのチェックアウト:
    $ git checkout <commit-hash> -- <file-path>
    <commit-hash>: チェックアウトするコミットのハッシュ。
    <file-path>: チェックアウトするファイルのパス。

$ git fetch

リモートの変更を取得して、ローカルのリモートトラッキングブランチを更新する。
ローカルの作業ブランチはそのまま。
$ git fetch の後に $ git merge や $ git rebase を手動で行う必要がある。

  • 基本的な使い方:$ git fetch
  • 特定のリモートリポジトリ(origin)から最新の変更を取得:
    $ git fetch origin(remote-name)
  • 特定のリモートリポジトリ(origin)の特定のブランチ(main)から最新の変更を取得:
    $ git fetch origin(remote-name) main(branch-name)

$ git merge

現在のブランチに <branch-name> の変更を統合します。
2つのブランチを統合し、マージコミットを作成します。
履歴が分岐してマージされる形になります。
競合が発生した場合、手動で解決する必要があります。

  • 基本的な使い方:$ git merge <branch-name>
    <branch-name>: マージしたい他のブランチの名前。
  • 作業ブランチに特定のブランチをマージ:
    $ git checkout main (作業ブランチmainに移動)
    $ git merge feature-branch

$ git rebase

現在のブランチの基底(基点)を別のブランチ<branch-name> の先端に変更します。
リベースにより現在のブランチの基点を変更して、より直線的な履歴を作成します。
ブランチの履歴が再書き換えられます。
競合が発生した場合、手動で解決する必要があります。

  • 基本的な使い方:$ git rebase <branch-name>
    <branch-name>: リベース先のブランチの名前。
  • 別のブランチ(feature-branch)をメインブランチの先端にリベース:
    $ git checkout feature-branch (作業ブランチfeature-branchに移動)
    $ git rebase main

$ git pull

リモートリポジトリから最新の変更を取得し、それを現在のブランチに統合します。
$ git fetch と $ git merge を一度に行うコマンド。

  • 指定されたリモートリポジトリから最新の変更を取得します(git fetch)。
  • その後、取得した変更を現在のブランチにマージします(git merge)。

  • 基本的な使い方:$ git pull [<remote> [<branch>]]
    <remote>: リモートリポジトリの名前(デフォルトは origin)。
    <branch>: リモートブランチの名前(デフォルトは現在のブランチ名)。
  • リモートリポジトリ(origin)のブランチ(main)の変更を取得し、現在のブランチに統合:
    $ git pull origin main

$ git switch

ブランチの切り替え専用のコマンド
$ git checkout よりも直感的でシンプルです。


  • 既存ブランチの切り替え:$ git switch <branch-name>
    <branch-name>: 切り替えたいブランチの名前。
  • 新しいブランチの作成と切り替え
    $ git switch -c <new-branch-name>
    <new-branch-name>: 作成する新しいブランチの名前。
    • オプション: -c (新しいブランチを作成して切り替える)

$ git push

ローカルの変更をリモートリポジトリに送信するコマンド。
ローカルのコミットをリモートブランチに反映させる。

  • デフォルトのリモートとブランチにプッシュ:$ git push
  • 特定のリモート(origin)のブランチ(main)にプッシュ:
    $ git push origin(remote-name) main(branch-name)
    <remote-name>: プッシュ先のリモートリポジトリの名前(通常は origin)。
    <branch-name>: プッシュするローカルブランチの名前。
  • 新しいブランチ(new-feature-branch)をリモート(origin)にプッシュ:
    $ git push origin(remote-name) new-feature-branch(new-branch-name)
  • タグ(v1.0.0)をプッシュ:
    $ git push origin(remote-name) v1.0.0(tag-name)

Discussion