あるローカルブランチを別のローカルブランチにマージする


167

マスターから分岐した複数のブランチがあります(それぞれ別のサブディレクトリにあります)。

  • Branch1:新しい開発、まだ完全に終了していない
  • Branch2:問題の修正プログラムですが、まだテスト中です
  • Branch3:ブランチをめちゃくちゃにして、復元しません

修正プログラムのテストが完了する前に、Branch1でコードを既に使用できるようにしたいので、修正を適用したまま開発を続行できます。
(しかし、gitでの私の経験はそれほど多くないので、私は最初に第3ブランチでマージをいじり始めました。特に、Branch1またはBranch2のいずれかを台無しにする前に、いじり回すために作成されました)

私の3番目のブランチでは、最初に次のことを試しました。

git merge feature/Branch1

しかし、これは次のエラーを出しました:

fatal: 'feature/Branch1' does not point to a commit

次にBranch1でcommit -aを実行して再試行しましたが、同じエラーが発生し続けます。

何が悪いのですか?Branch1とBranch3のコードをマージするにはどうすればよいですか?

回答:


236

まず、Branch3にチェックアウトします。

git checkout Branch3

次にBranch1をマージします。

git merge Branch1

また、Branch2上のBranch1の更新されたコミットが必要な場合は、おそらく探しています git rebase

git checkout Branch2
git rebase Branch1

これにより、Branch2がBranch1の最新の更新で更新されます。


1
(Branch2からBranch1への更新が必要です;-))Branch2にはBranch1が表示されますが、両方のブランチでgit branch -aを実行すると、その逆は表示されません。したがって、Branch1でBranch2にリベースすることはできません。git rebase Branch2-> fatal:単一のリビジョンが必要
でした

私がgit rebase origin / Branch2としてリベースを行うと、それでもそのエラーメッセージ+無効なアップストリームorigin / Branch2
Nemelis

1
@ Si8これにより、ブランチ1からブランチ3へのコミットのみが追加されます。Branch1はそのまま保持されます。
gabra

1
私が現在Devブランチにいて、Dev1をマージすると、Dev1がDevにマージされます。正しいですか?
Si8 2017

1
はい。私はそれを試すことをお勧めします。何かが壊れたら、戻ることができます。それがVCSの目的です。
gabra 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.