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

Re: Triangular workflows and some anecdotes from the trenches

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 5, 2016, 22:24 UTC
Message-ID
<xmqq37qz1ypa.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<CAFOYHZARoEXkT6kVy7+wMSqUxSVVHHMV5KfhU6FON3tB6XEuMg@mail.gmail.com>
Chris Packham <judge.packham@gmail.com> writes:
Show 5 quoted lines
> We ran into something at $dayjob the other day. The actual problem was
> a developer ended up amending a commit that had already been pushed.
> It happens occasionally and is usually recoverable with a simple
> rebase and is generally a learning experience. In this particular case
> however things were a bit more complicated.

Developer ending up amending is not an issue per-se, unless the result is pushed back to the public.

However, it would be nicer if "git commit --amend", "git rebase", "git branch -f", and "git checkout -B" notices the situation and warns about what would happen.

Show 5 quoted lines
>   git config alias.amend '!git merge-base --is-ancestor HEAD
> @{upstream} || git commit --amend'
>
> I'm just wondering if something more official can be added to git
> commit --amend (and probably git rebase).

A bigger problem may be how you make sure everybody sets up @{upstream} correctly. You may fork your own copy of a branch from the target branch, start working on it, further fork other branches on your work to experiment different approaches, with the intention to later use the best one to update your first fork.

At which point, the @{upstream} of the secondary branches are your own first branch, not the public one--which is not a problem per-se, because your first branch (whose @{upstream} is the remote one) is not yet public and you should be allowed to freely update it to polish it by rewriting. But then after you push out your first branch as an interim snapshot to the public, you no longer want to rewrite the commits reachable from it. So (to put it mildly) it would be quite complex to get all the corner cases right, and the definition of "right" would probably depend on the exact workflow.

Previous: Chris PackhamNext: Chris Packham
Message 2 of 4 in “Triangular workflows and some anecdotes from the trenches”
  1. Chris PackhamApr 5, 2016
  2. Junio C HamanoApr 5, 2016
  3. Chris PackhamApr 6, 2016
  4. Junio C HamanoApr 6, 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.