# Understanding git.git's branch policy

2 messages from 2010-01-24 to 2010-01-25. Participants: Steven E. Harris, Petr Baudis.
Thread: https://gitlist.dev/t/22376

## Steven E. Harris, 2010-01-24 23:34

Subject: Understanding git.git's branch policy
Message-ID: <83pr4znklo.fsf@torus.sehlabs.com>
URL: https://gitlist.dev/e/83pr4znklo.fsf%40torus.sehlabs.com

```
Radding the maintain-git.txt document¹, there are a few points that I'm
having trouble decoding. Under "The Policy", it notes

,----
| The tips of 'master', 'maint' and 'next' branches will always
| fast-forward, to allow people to build their own customization on top
| of them.
`----

I understand that a "fast-forward merge" means that one's current HEAD
commit is an ancestor of the evolved branch's head, so that the HEAD
pointer can move forward to "catch up" without needing to combine
disparate content.

How does this relate to the prescribed use of the "master", "maint", and
"next" branches? What operations or patterns does it constrain against?


Footnotes: 
¹ http://kernel.org/pub/software/scm/git/docs/howto/maintain-git.txt

-- 
Steven E. Harris

```

## Petr Baudis, 2010-01-25 00:17

Subject: Re: Understanding git.git's branch policy
Message-ID: <20100125001732.GD9553@machine.or.cz>
URL: https://gitlist.dev/e/20100125001732.GD9553%40machine.or.cz
In-Reply-To: <83pr4znklo.fsf@torus.sehlabs.com>

```
On Sun, Jan 24, 2010 at 06:34:11PM -0500, Steven E. Harris wrote:
> Radding the maintain-git.txt document¹, there are a few points that I'm
> having trouble decoding. Under "The Policy", it notes
> 
> ,----
> | The tips of 'master', 'maint' and 'next' branches will always
> | fast-forward, to allow people to build their own customization on top
> | of them.
> `----
> 
> I understand that a "fast-forward merge" means that one's current HEAD
> commit is an ancestor of the evolved branch's head, so that the HEAD
> pointer can move forward to "catch up" without needing to combine
> disparate content.
> 
> How does this relate to the prescribed use of the "master", "maint", and
> "next" branches? What operations or patterns does it constrain against?

Rebases or other jumps. New tip of 'master' will always be descendant of
old tip of 'master', never a commit from a parallel commit line. This is
preserved over commits and merges, but not over operations that rewrite
history - rebase, filter-branch and such.

The term "fast-forward" is used commonly in this sense. E.g. git push
will typically deny you to push out a branch that is not fastforwarding
the currently pushed out branch, unless you force it to.

-- 
				Petr "Pasky" Baudis
A lot of people have my books on their bookshelves.
That's the problem, they need to read them. -- Don Knuth

```
