On 4 September 2012 14:44, Antony Male <antony.m...@gmail.com> wrote:
> On Monday, 3 September 2012 21:53:28 UTC+1, Mauro Sanna wrote:
>>
>> On 3 September 2012 19:45, Antony Male <anton...@gmail.com> wrote:
>> > On Monday, 3 September 2012 18:33:03 UTC+1, Mauro Sanna wrote:
>> >>
>> >> On 3 September 2012 18:56, Antony Male <anton...@gmail.com> wrote:
>> >> > On Monday, 3 September 2012 17:32:46 UTC+1, Mauro Sanna wrote:
>> >> >>
>> >> >> On 3 September 2012 18:13, Antony Male <anton...@gmail.com> wrote:
>> >> >> > On Monday, 3 September 2012 12:19:11 UTC+1, Mauro Sanna wrote:
>> >> >> >>
>> >> >> >> Then I do a git checkout master, git merge devel and push and all
>> >> >> >> done.
>> >> >> >> I always have done this but now, in a new application, when I do
>> >> >> >> git
>> >> >> >> merge
>> >> >> >> devel into master it asks me for a commit message.
>> >> >> >
>> >> >> >
>> >> >> > In version 1.7.10, git started prompting for a commit message
>> >> >> > after
>> >> >> > every
>> >> >> > merge. The rationale behind this is explained in Junio's (the
>> >> >> > maintainer's)
>> >> >> > blog post [1]
>> >> >>
>> >> >> Ok but, why it don't ask for a commit message when used in some
>> >> >> other
>> >> >> projects?
>> >> >> .git/config is the same.
>> >> >> Perhaps because I've set the repository using git before 1.7.10?
>> >> >
>> >> >
>> >> > Maybe in one project the merges you're doing are non-fast-forward (as
>> >> > you
>> >> > stated), whereas in the others they're fast-forward? Maybe there's a
>> >> > configuration difference? (I didn't think there was a config key to
>> >> > disable
>> >> > this behaviour, but it's worth a check).
>> >>
>> >>
>> >> Here the config for two of my projects.
>> >> The first is not fast-forward while in the second the merge is
>> >> fast-forward.
>> >
>> >
>> > There we go! Read up on the differences between fast-forward and
>> > non-fast-forward merges. [1] is a helpful resource.
>> >
>> > Now, as you can see, fast-forward merges don't involve an actual merge
>> > commit. No merge commit = no commit message. Which is why you're not
>> > being
>> > prompted for a message for the fast-forward merge.n
>>
>> Yes I know, but I want my merges to be fast-forward.
>> Because git configuration is the same for the two projects I don't
>> know why the merge for first project go fast-forward while the second
>> one not.
>> What's the differerence between the two configurations? There is no
>> difference, so why I have a merge with fast-forward and a merge with
>> no fast-forward?
>
>
>  'git merge' will (by default) do a fast-forward merge if it can, otherwise
> it will do a recursive merge.
>
> As shown by the PDF I linked to a few posts back, if you're merging develop
> into master (git checkout master; git merge develop), a fast-forward merge
> can happen if and only if develop is a direct descendant of master. That is,
> if the master branch contains only commits which are also contained by the
> develop branch. If master has commits which develop does not have, then a
> fast-forward merge cannot occur, and a recursive merge must be used instead.
>
> Graphically: (Use a fixed-width font to view: I know google groups uses a
> variable-width font by default)
>
> A fast-forward merge *can* occur:
>
>         O--O--O
>        /      ^
> O--O--O    develop
>       ^
>     master
>
> which will result in:
>
>             develop
>                v
> O--O--O--O--O--O
>                ^
>              master
>
> A fast-forward merge *cannot* occur (as master contains commits which aren't
> present on develop):
>
>            develop
>               v
>         O--O--O
>        /
> O--O--O--O
>          ^
>       master
>
> where a recursive merge will result in (M being the merge commit):
>
>            develop
>               v
>         O--O--O
>        /       \
> O--O--O--O------M
>                 ^
>               master
>
>
> If you're having trouble visualising your branch structure, use `gitk master
> develop` (if gitk is available), otherwise `git log --graph --oneline
> --decorate master develop`. You should see that, in the repository where
> fast-forward merges are occuring, there are no commits present on master
> which aren't also present on develop. In the other repository (where
> fast-forward merges are not occuring), you will see that there is at least
> one commit on master which is not also present on develop (you may have to
> look back a bit, to slightly before the first recursive merge occurred).
>
> Hope that helps clarify the situation. If you're still not getting it, paste
> (or pastebin) the output of `git log --graph --oneline --decorate master
> develop`, and I can point out the critical difference.

Here is:
http://pastebin.com/dmxtS8ZB

-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To post to this group, send email to git-users@googlegroups.com.
To unsubscribe from this group, send email to 
git-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/git-users?hl=en.

Reply via email to