By default, git merge command refuses to merge histories that do not share a common ancestor.
This option can be used to override this safety when merging histories of two projects that started their lives independently.
As that is a very rare occasion, no configuration variable to enable this by default exists and will not be added.
–allow-unrelated-histories
Append ref names and object names of fetched refs to the existing contents of .git/FETCH_HEAD.
Without this option old data in .git/FETCH_HEAD will be overwritten.
-a, –append
Similar to –depth, except it specifies the number of commits from the current shallow boundary instead of from the tip of each remote branch history.
–deepen=
Limit fetching to the specified number of commits from the tip of each remote branch history.
If fetching to a shallow repository created by git clone with –depth= option (see git-clone(1)), deepen or shorten the history to the specified number of commits.
Tags for the deepened commits are not fetched.
–depth=
Invoke an editor before committing successful mechanical merge to further edit the auto-generated merge message, so that the user can explain and justify the merge.
–edit, -e
When git fetch is used with : refspec, it refuses to update the local branch unless the remote branch it fetches is a descendant of .
This option overrides that check.
-f, –force
In addition to branch names, populate the log message with one-line descriptions from at most actual commits that are being merged.
See also git-fmt-merge-msg(1).
–log[=]
With –no-commit perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing.
–no-commit
Create a merge commit even when the merge resolves as a fast-forward.
This is the default behaviour when merging an annotated (and possibly signed) tag.
–no-ff
By default, tags that point at objects that are downloaded from the remote repository are fetched and stored locally.
This option disables this automatic tag following.
The default behavior for a remote may be specified with the remote..tagOpt setting.
–no-tags
Verify that the tip commit of the side branch being merged is signed with a valid key, i.e.
a key that has a valid uid: in the default trust model, this means the signing key has been signed by a trusted key.
–no-verify-signatures
Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified.
This flag forces progress status even if the standard error stream is not directed to a terminal.
–progress
Incorporates changes from a remote repository into the current branch.
If the current branch is behind the remote, then by default it will fast-forward the current branch to match the remote.
If the current branch and the remote have diverged, the user needs to specify how to reconcile the divergent branches with –rebase or –no-rebase
Git doc
This is passed to both underlying git-fetch to squelch reporting of during transfer, and underlying git-merge to squelch output during merging.
-q, –quiet
When true, rebase the current branch on top of the upstream branch after fetching.
If there is a remote-tracking branch corresponding to the upstream branch and the upstream branch was rebased since last fetched, the rebase uses that information to avoid rebasing non-local changes.
-r, –rebase[=false|true|preserve|interactive]
Deepen or shorten the history of a shallow repository to exclude commits reachable from a specified remote branch or tag.
This option can be specified multiple times.
–shallow-exclude=
Produce the working tree and index state as if a real merge happened, but do not actually make a commit, move the HEAD, or 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).
–squash
Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried.
If there is no -s option, a built-in list of strategies is used instead (git merge-recursive when merging a single head, git merge-octopus otherwise).
-s , –strategy=
If the source repository is complete, convert a shallow repository to a complete one, removing all the limitations imposed by shallow repositories.
If the source repository is shallow, fetch as much as possible so that the current repository has the same history as the source repository.
–unshallow
By default git fetch refuses to update the head which corresponds to the current branch.
This flag disables the check.
This is purely for the internal use for git pull to communicate with git fetch, and unless you are implementing your own Porcelain you are not supposed to use it.
-u, –update-head-ok
By default when fetching from a shallow repository, git fetch refuses refs that require updating .git/shallow.
This option updates .git/shallow and accept such refs.
–update-shallow
When given, and the repository to fetch from is handled by git fetch-pack, –exec= is passed to the command to specify non-default path for the command run on the other end.
–upload-pack
Verify that the tip commit of the side branch being merged is signed with a valid key, i.e.
a key that has a valid uid: in the default trust model, this means the signing key has been signed by a trusted key.
–verify-signatures