3

i want to have no other branch history commit when i merge other branch to master. how can i do it ?

as we know:

git pull --rebase origin test # mean: only history commit no merge commit.

git pull --no-ff origin test # mean: history commit and merge commit.

git pull --ff-only origin test # mean: only history commit no merge commit.

i want to "only merge commit ", how ? pls. like this:

https://github.com/torvalds/linux/commits/master enter image description here

further question:

if i use "--squash", it will not auto log "Merge branch 'xxx' of xxxx" or "Merge tag 'xxx' of xxxx" when merge. need write it on my hand ?

kangear
  • 2,493
  • 2
  • 31
  • 44

2 Answers2

2

Note that you can also configure the branch where you merge to automatically squash the commits you want to merge in (as in this discussion):

git config branch.<name>.mergeoptions --squash 

git config has:

branch.<name>.mergeoptions

Sets default options for merging into branch <name>.
The syntax and supported options are the same as those of git-merge, but option values containing whitespace characters are currently not supported.

That way, you don't have to add any extra option to your git merge.

As mentioned in "In git, what is the difference between merge --squash and rebase?", that won't record a merge though:

This would record a merge:

git config branch.<name>.mergeoptions --no-ff
Community
  • 1
  • 1
VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
1

i get answer:

   --squash, --no-squash
       Produce the working tree and index state as if a real merge happened
       (except for the merge information), but do not actually make a commit or
       move the HEAD, nor record $GIT_DIR/MERGE_HEAD to cause the next git commit
       command to create a merge commit. This allows you to create a single commit
       on top of the current branch whose effect is the same as merging another
       branch (or more in case of an octopus).

git pull --squash origin test

It's ok!

kangear
  • 2,493
  • 2
  • 31
  • 44