1. ホーム
  2. git

[解決済み] ブランチ A から B への変更を、マージやコミットの追加を行わずに適用します。

2022-09-10 13:23:38

質問

私のシナリオは、ビルド プロセスに大きな改善を加えたブランチ (ブランチ A) があり、別のブランチ (ブランチ B) では関連性のない機能に取り組んでいる、というものです。そこで、Bブランチをハックしているときに、Aブランチで書いたものを取り込みたいと考えています。しかし、私は自分のブランチ B を "pollute" したくはなく、ブランチ A からの変更をステージされていない変更に追加するだけです。

私が試したこと(branchBに立ったとき)。

git merge --no-commit branchA

マージの中に入ってしまうので、うまくいきません。そうでなければ、完璧なのですが。

git checkout branchA -- .

master.branchAの変更ではなく、branchA...branchB間の変更を適用するため、うまくいきません。

他に何かありますか?

編集: はい、ブランチ A の変更がコミットされます。この例では、ビルドの改善を行ったブランチは1つだけですが、機能ブランチで作業している間に適用したいビルドの改善を行ったブランチは最大でN個まであるかもしれません。

どのように解決するのですか?

私はちょうど同じようなことをしなければならなかったので、それを修正することができました。 --squash をマージコマンドに追加することで修正できました。

git merge --no-commit --squash branchA
git reset HEAD # to unstage the changes