On 4 September 2012 14:44, Antony Male <[email protected]> wrote: > On Monday, 3 September 2012 21:53:28 UTC+1, Mauro Sanna wrote: >> >> On 3 September 2012 19:45, Antony Male <[email protected]> wrote: >> > On Monday, 3 September 2012 18:33:03 UTC+1, Mauro Sanna wrote: >> >> >> >> On 3 September 2012 18:56, Antony Male <[email protected]> wrote: >> >> > On Monday, 3 September 2012 17:32:46 UTC+1, Mauro Sanna wrote: >> >> >> >> >> >> On 3 September 2012 18:13, Antony Male <[email protected]> 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/git-users?hl=en.
