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

Re: Branches, upstreams, rebases and logistics

From
Jeff King <peff@peff.net>
Date
Mar 31, 2021, 11:32 UTC
Message-ID
<YGRdtHjaL5l5v5Ym@coredump.intra.peff.net>
In-Reply-To
<20210330202852.9673-1-stdedos+git@gmail.com>
On Tue, Mar 30, 2021 at 11:28:52PM +0300, stdedos@gmail.com wrote:
Show 23 quoted lines
> However, with the Github way of working, that means:
> I have two remotes, (origin and upstream), on which, I develop and
> push on the `origin`, but I am really tracking/rebasing on/from `upstream`.
> 
> I cannot `--track` upstream, as plain `git push` won't work, and
> for pull, I have to separately `git fetch --all`, `git rebase upstream/<branch>`
> 
> - OR -
> 
> I have a branch, which depends on top of another branch (not yet merged upstream).
> 
> o - origin/master
>  \
>   o---o---o---o
>   |            \
>   fix/local     o--o - (fix/depends-on-local)
> 
> For brevity, I am setting "git branch --set-upstream-to=fix/local",
> which helps, when rebasing fix/local on top of origin/master, to rebase
> fix/depends-on-local on top of fix/local.
> 
> However, as noted above, a branch cannot be pushed upstream easily and
> have a different upstream set at the same time.

This is usually called a "triangular" workflow; you can find some discussion in the list archive and documentation by searching for that term.

But in short, what you probably want is to set:
  git config remote.pushdefault yourfork

(I'm not entirely sure, but I think "yourfork" is "origin" in your example). Which means that "git push" will behave as you'd like, pushing to your fork. And you are free to set the "upstream" of each branch to the thing it is based on (again, assuming your "upstream" remote is the actual upstream project that you can't push to):

  git branch --set-upstream-to=upstream/master fix/local
  git branch --set-upstream-to=fix/local fix/depends-on-local

And then from either "fix/local" or "fix/depends-on-local" branches, you can "git pull --rebase" (or in the case of the latter, just "git rebase" would do the same thing).

-Peff
Previous: stdedos@gmail.com
Message 2 of 2 in “Branches, upstreams, rebases and logistics”
  1. stdedos@gmail.comMar 30, 2021
  2. Jeff KingMar 31, 2021

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.