directory search
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
characters

名称

git-merge-file  - 运行三路文件合并

概要

git merge-file [-L <current-name> [-L <base-name> [-L <other-name>]]]        [--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]        [--[no-]diff3] <current-file> <base-file> <other-file>

描述

git merge-file将从<base-file>to <other-file>导入的所有变化合并到一起<current-file>。结果通常会进入<current-file>git merge-file对于将单独的更改组合到原始文件非常有用。假设<base-file>是原来的,都<current-file><other-file>都进行修改<base-file>,然后git merge-file结合了变化。

如果两者都发生冲突<current-file>并且<other-file>在共同的线段中发生变化。如果发现冲突,git merge-file通常会输出一个警告,并将冲突与包含<<<<<<<和>>>>>>>标记的行进行括号。典型的冲突将如下所示:

<<<<<<< A
lines in file A=======lines in file B>>>>>>> B

如果有冲突,用户应编辑结果并删除其中一个选项。然而,当--ours--theirs--union选项有效时,这些冲突分别有利于分别来自<current-file>线段<other-file>,来自线段或来自两者的线路。冲突标记的长度可以通过--marker-size选项给出。

该程序的退出值对错误为负值,否则冲突的数量(如果存在多次冲突,则截断为127)。如果合并是干净的,则退出值为0。

git merge-file被设计成是 RCS merge也就是的最小克隆;这就说,它实现了 git 所需的所有 RCS merge功能[1]。

选项

-L <label>

此选项最多可以放三次,并指定标签用于替代冲突报告中的相应文件名。也就是说,git merge-file -L x -L y -L z a b c生成的输出看起来好像来自文件x,y 和 z,而不是来自文件a,b 和 c。

-p

将结果发送到标准输出而不是覆盖<current-file>

-q

安静; 不要警告冲突。

--diff3

以“diff3”风格显示冲突。

--ours   --theirs   --union

而不是在文件中留下冲突,解决有利于我们(或他们或两者)方面的冲突。

示例

git merge-file README.my README README.upstream

将自 README 后的 README.my 和 README.upstream 的更改结合起来,尝试合并它们并将结果写入 README.my。

git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345

将tmp / a123 和 tmp / c345 与基本 tmp / b234合并,但使用标签ac而不是tmp/a123tmp/c345

Previous article: Next article: