From fecf11684ab25893ff18c7b90c69f2846a6e1f7d Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Sun, 2 Oct 2022 10:59:29 -0500 Subject: [PATCH] Add Transition A Branch From One Base To Another as a Git TIL --- README.md | 3 ++- ...ition-a-branch-from-one-base-to-another.md | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 git/transition-a-branch-from-one-base-to-another.md diff --git a/README.md b/README.md index c8e7d90..3fa9ff4 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1250 TILs and counting..._ +_1251 TILs and counting..._ --- @@ -317,6 +317,7 @@ _1250 TILs and counting..._ - [Stashing Only Unstaged Changes](git/stashing-only-unstaged-changes.md) - [Stashing Untracked Files](git/stashing-untracked-files.md) - [Switch To A Recent Branch With FZF](git/switch-to-a-recent-branch-with-fzf.md) +- [Transition A Branch From One Base To Another](git/transition-a-branch-from-one-base-to-another.md) - [Turn Off The Output Pager For One Command](git/turn-off-the-output-pager-for-one-command.md) - [Two Kinds Of Dotted Range Notation](git/two-kinds-of-dotted-range-notation.md) - [Unstage Changes Wih Git Restore](git/unstage-changes-with-git-restore.md) diff --git a/git/transition-a-branch-from-one-base-to-another.md b/git/transition-a-branch-from-one-base-to-another.md new file mode 100644 index 0000000..bb10def --- /dev/null +++ b/git/transition-a-branch-from-one-base-to-another.md @@ -0,0 +1,23 @@ +# Transition A Branch From One Base To Another + +Let's say I'm working in a git workflow where we have `main` as our production +branch and `dev` as our development branch. I've opened a feature branch off of +`main` and made a series of commits. It is at that point that I realize I +should instead be branched off `dev`. I could open up a new branch off `dev` +and then `cherry-pick` those commits. That is messier and more steps than +necessary. + +Instead, I can transition the feature branch I'm already working from to a +different base. + +The [`git-rebase`](https://git-scm.com/docs/git-rebase) command supports this +with the `--onto` flag. + +```bash +$ git rebase --onto dev main my-feature-branch +``` + +Specify the new base branch (`dev`), the current base (`main`), and then the +name of the branch you are transitioning (`my-feature-branch`). + +[source](https://stackoverflow.com/a/10853956/535590)