1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

誤ったブランチからのブランチ作成とその修正方法

Posted at

困ったこと

プロジェクトにおいて、新しい機能の開発やバグ修正を行う際、通常は特定のブランチ(例えば**featureブランチやbugfixブランチ)から新しいブランチを作成します。しかし、間違ってdevelop**ブランチから新しいブランチを作成してしまうことがあります。このような状況は、特に大きなプロジェクトや多くの開発者が関わる環境でよく発生します。

以下は、そのような状況の一例です:

e078d2b27c3b (HEAD -> feature/new-feature, origin/feature/new-feature) [api] fix - ...
1f217f6f5829 [api] fix - ...
c1048fc72e55 [api] fix - ...
1f7164ecb346 [api] move and add definitions to protocols belonging to area
78f3f8ec288c [api] add area code-based ranking protocol

解決方法

この問題を解決するためには、以下の手順を実行します

  1. 新しいブランチの作成
    正しいベースブランチ(この場合は**feature/special-event**)から新しいブランチを作成します。

    git checkout feature/special-event
    git pull
    git checkout -b correct-branch
    
  2. 必要なコミットの適用
    誤ったブランチから正しいブランチへ必要なコミットを移動します。これは**cherry-pick**コマンドを使用して行います。

    git cherry-pick e078d2b27c3b
    git cherry-pick 1f217f6f5829
    git cherry-pick c1048fc72e55
    # 必要なすべてのコミットに対して繰り返します
    
  3. 新しいブランチをリモートにプッシュ
    修正したブランチをリモートリポジトリにプッシュします。

    git push origin correct-branch
    
  4. 新しいプルリクエストの作成
    GitHub上で、新しいブランチから目的のベースブランチ(feature/special-event)に向けてプルリクエストを作成します。

図解

  1. 誤ったブランチの状況:

    develop
    |
    |--- commit A (78f3f8ec)
    |--- commit B (1f7164ec)
    |
    |--- feature/new-feature (誤ったブランチ)
          |
          |--- commit C (c1048fc7)
          |--- commit D (1f217f6f)
          |--- commit E (e078d2b2)
    
  2. cherry-pickのプロセス

    feature/special-event (正しいベースブランチ)
    |
    |--- correct-branch (新しいブランチ)
          |
          |--- cherry-pick commit C (c1048fc7)
          |--- cherry-pick commit D (1f217f6f)
          |--- cherry-pick commit E (e078d2b2)
    
  3. 最終的なブランチの状態

    feature/special-event
    |
    |--- correct-branch
          |
          |--- commit C (c1048fc7)
          |--- commit D (1f217f6f)
          |--- commit E (e078d2b2)
    

まとめ

誤ったブランチからブランチを作成してしまった場合、**git cherry-pick**を使用して必要なコミットを新しい、正しいブランチに移動することで問題を解決できます。この方法は、既にいくつかの作業が行われている場合に特に有効です。Gitは非常に強力なツールであり、このような一般的な問題を解決するための複数の方法を提供しています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?