git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Rebasing cascading topic trees

From
NKNorbert Kiesel <nkiesel@gmail.com>
Date
Nov 17, 2016, 03:21 UTC
Message-ID
<CAM+g_Ns8bxry2j0X5=1k+WwQ0ZbHP=19jHRsDovC6GFGvYtBCQ@mail.gmail.com>
In-Reply-To
<20161117014522.lzk43sfmpl4ted3d@sigill.intra.peff.net>
More things I learned!

So there are (at least) 2 possible approaches: using history, or using local tracking branches. The latter looks actually nicer to me, with the exception that if asks for a `git pull`. Using `git pull --rebase` actually also ends up with the same tree, but I like the rebase better.

The following 2 scripts show the 2 approaches. Only difference is in the creation of topic/b and the last rebase command.

# History mkdir topic; cd topic git init date > a; git add a; git commit -m a date > b; git add b; git commit -m b git branch -b topic/a git checkout -b topic1 date > c; git add c; git commit -m c date > d; git add d; git commit -m d git checkout -b topic2 date > e; git add e; git commit -m e date > f; git add f; git commit -m f git checkout master date > g; git add g; git commit -m g echo "before rebase"; git log --oneline --graph --all git rebase master topic1 echo "after rebase of topic1"; git log --oneline --graph --all git rebase --onto=topic1 topic1@{1} topic2 echo "after rebase of topic2"; git log --oneline --graph --all

# Tracking mkdir topic; cd topic git init date > a; git add a; git commit -m a date > b; git add b; git commit -m b git branch -b topic/a git checkout -b topic1 date > c; git add c; git commit -m c date > d; git add d; git commit -m d git checkout --track topic1 -b topic2 date > e; git add e; git commit -m e date > f; git add f; git commit -m f git checkout master date > g; git add g; git commit -m g echo "before rebase"; git log --oneline --graph --all git rebase master topic1 echo "after rebase of topic1"; git log --oneline --graph --all git rebase --onto=topic1 master topic2 echo "after rebase of topic2"; git log --oneline --graph --all

On Wed, Nov 16, 2016 at 5:45 PM, Jeff King <peff@peff.net> wrote:
Show 9 quoted lines
> On Wed, Nov 16, 2016 at 04:12:20PM -0800, Norbert Kiesel wrote:
>
>> Yes, `git rebase --onto topic1 topic1@{1} topic2` is the answer!
>
> See also the `--fork-point` option, which (I think) should do this for
> you (and is the default if "topic1" is the configured upstream for
> topic2 and you just run "git rebase").
>
> -Peff
Previous: Jeff King
Message 5 of 5 in “Rebasing cascading topic trees”
  1. Norbert KieselNov 16, 2016
  2. Junio C HamanoNov 16, 2016
  3. Norbert KieselNov 17, 2016
  4. Jeff KingNov 17, 2016
  5. Norbert KieselNov 17, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.