On Sun, 24 Jul 2016 23:26:20 -0700 Michael <keybou...@gmail.com> wrote:
> How do I move a *change* (instead of a whole file) from one branch to > another? > > keybounceMBP:realisticfluids michael$ git diff stash^1 stash -- > RealisticFluids.java diff --git > a/src/main/java/com/mcfht/realisticfluids/RealisticFluids.java > b/src/main/java/com/mcfht/realisticfluids/RealisticFluids.java index > ca1bbb5..343bbeb 100644 > --- a/src/main/java/com/mcfht/realisticfluids/RealisticFluids.java > +++ b/src/main/java/com/mcfht/realisticfluids/RealisticFluids.java > @@ -613,6 +613,7 @@ public class RealisticFluids extends > DummyModContainer // if (map.distant.size() < 256) > // System.out.println("Added eeet"); > map.distant.add(c); > + map.chunks.remove(c); > } > } > } > > There is a single patch in one file in that stash that needs to be > promoted to develop. Everything else in that stash (so far) is > debugging, one refactoring has happened (so the other stuff in the > file won't even apply), and there would be a known merge conflict if > I tried. > > Now, this is an absolutely trivial item, and I can apply this line by > hand. But git should not be about doing this by hand. I figure > there's a way to do this that I don't know. The question is a bit vague in terminology. Git does not store patches, it only ever stores commits, and patches are generated on-the-fly by various tools intended to display changes to the user (such as `git diff` etc). The command which takes specified commits or commits from anywhere and applies them to the currently checked out branch is `git cherry-pick`. If you want to cherry-pick a stashed commit, two minor twists are requred as a stash entry is itself a merge commit with its first parent being the tip commit of the branch which were the HEAD when the stash was recorded: 1) Pass `git cherry-pick` the "-m 1" command-line option so that it knows which side of the merge commit to consider to be the mainline. 2) Pass it the "-n" command-line option so that the applied change is not automatically committed. This one is needed because the commit representing a stash entry has a pre-cooked commit message, and by default `git cherry-pick` commits the transferred change using the commit message of the change; in this case this is most probably not what you want. So, do git cherry-pick -m 1 -n stash@{0} followed by git commit to get your change intergated. -- You received this message because you are subscribed to the Google Groups "Git for human beings" group. To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.