Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
git_merge [2019/03/07 13:47] – [Setting branch options] rpjdaygit_merge [2019/03/13 13:09] (current) – [Global merge.ff option] rpjday
Line 333: Line 333:
 </code> </code>
  
-For example, if you wanted to prevent any fast-forward merges to any ''master'' branch, you could:+For example, if you wanted to prevent any fast-forward merges to any ''master'' branch across all of your repositories, you could:
  
 <code> <code>
 $ git config --global branch.master.mergeOptions "--no-ff" $ git config --global branch.master.mergeOptions "--no-ff"
 +</code>
 +
 +==== Global merge.ff option ====
 +
 +For merging, there is at least one repo-wide merge option you can set (see ''man git-merge''):
 +
 +<code>
 +merge.ff
 +    By default, Git does not create an extra merge commit when
 +    merging a commit that is a descendant of the current
 +    commit. Instead, the tip of the current branch is
 +    fast-forwarded. When set to false, this variable tells Git
 +    to create an extra merge commit in such a case (equivalent
 +    to giving the --no-ff option from the command line). When
 +    set to only, only such fast-forward merges are allowed
 +    (equivalent to giving the --ff-only option from the command
 +    line).
 +</code>
 +
 +So for widespread fast-forward merge configuration:
 +
 +<code>
 +$ git config --global merge.ff "true"
 +</code>
 +
 +This setting is superseded by any per-branch fast-forward merge setting.
 +
 +===== Merge strategies =====
 +
 +==== ours ====
 +
 +Technically record a merge while totally ignoring its content -- for record-keeping.
 +
 +Example:
 +
 +<code>
 +$ git checkout master
 +$ git merge --strategy=ours <obsolete branch>
 +</code>
 +
 +How to make ''master'' look exactly like ''develop'':
 +
 +<code>
 +$ git checkout topic
 +$ git merge -s ours master
 +$ git checkout master
 +$ git merge --ff-only topic
 +</code>
 +
 +To do this for an arbitrary commit, create a temporary branch:
 +
 +<code>
 +$ git checkout -b tempbranch <commit ID>
 +$ git merge -s ours master
 +$ git checkout master
 +$ git merge --ff-only tempbranch
 </code> </code>
  • git_merge.1551966427.txt.gz
  • Last modified: 2019/03/07 13:47
  • by rpjday