gitmergebranch

Applying the changes from branch A to B, without merging or adding commits


My scenario is that I have one branch in which I've made big improvements to the build process (branch A) and in another I'm working on a unrelated feature (branch B). So now when I'm hacking away at branch B, I want to pull in the stuff I wrote in branch A because I want faster and easier builds. However, I don't want to "pollute" my branch B, just add changes from branchA to unstaged changes.

What I've tried (when standing on branchB):

git merge --no-commit branchA

Doesn't work because it puts you inside a merge. If it didn't, it would be perfect.

git checkout branchA -- .

Doesn't work because it applies changes between branchA..branchB and not the changes master..branchA.

Anything else?

Edit: Yes, changes on branch A are committed. In this example there is only one branch with build improvements, but there may be up to N branches with build improvements that I want to apply while working on a feature branch.


Solution

  • I just had to do something similar and was able to fix it by adding --squash to the merge command

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