我正在创建一个合并驱动程序.我已经定义了一个.gitattributes文件,如下所示:
filename merge=mergeStrategy
我在$ PROJECT/.git/config中创建了合并驱动程序,如下所示:
[merge "mergeStrategy"]
name = My merge strategy
driver = scripts/mergeScript.sh
Run Code Online (Sandbox Code Playgroud)
这在本地工作正常,但我想将此合并驱动程序提交到git存储库,以便合并策略对每个人都有效.
有没有办法可以将此(或其他Git配置选项)添加到存储库本身?
我有一堆git存储库,每个包含一个文件.我想将它们合并在一起,最好是一步到位.我的目标是这个图:
*----¬ mergedrepo/master
| \ \ \
| | | * repoA/master
| | * repoB/master
| | |
| | * repoB/...
| * repoC/master
* repoD/master
|
* repoD/...
Run Code Online (Sandbox Code Playgroud)
我试过了git merge,但看起来章鱼策略不适用于不相交的树木
$ git merge a/master b/master c/master d/master
Unable to find common commit with a/master
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)
我也被告git merge --squash知会有所帮助,但这也给出了同样的错误.
这会生成正确的图形,但会丢失所有文件:
$ git merge -s ours a/master b/master c/master d/master
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
有没有办法在将master合并到分支时避免pom.xml中版本标记中的合并冲突.我有很多pom文件,80,并且它们都有相同的版本,与master中的版本不同.仅为版本标签执行80个pom文件的git mergetool是费力且耗时的.
谢谢,-Abidi
git git-merge pom.xml merge-conflict-resolution git-merge-conflict
GitHub上有一个开源项目.它的原始仓库包含最新的主分支.现在有人(不是我)分配了这个仓库,从主分支创建了一个开发分支,并将东西添加到开发分支.我现在想要做的是将开发分支合并回主分支.不幸的是,分叉回购的主分支不是最新的.另请注意,我没有拥有两个相应的远程回购.
目前,我已将原始仓库和分叉仓库克隆到我的本地机器上git clone.如何将forked repo的开发分支合并到我本地计算机上的原始仓库的主分支中(即不在远程服务器上,这是不可能的)?
我正在尝试从devel分支到主服务器的合并壁球.
stefanos-imac:trunk borini$ git merge --squash devel
CONFLICT (content): Merge conflict in test1
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at least 2224 and retry the command.
Squash commit -- not updating HEAD
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)
很公平.
stefanos-imac:trunk borini$ git config merge.renameLimit 999999
Run Code Online (Sandbox Code Playgroud)
然后我尝试撤消合并并用更高的限制重做它
stefanos-imac:trunk borini$ git merge --abort
fatal: There is no merge to abort (MERGE_HEAD missing).
Run Code Online (Sandbox Code Playgroud)
好吧,也许我必须按照它说的做,只需重新调用merge命令 …
我知道Araxis Merge现在是mergetoolGit 的"完全支持" ,所以我能找到关于配置Git使用它的大部分内容现在已经过时了.特别是,Araxis Merge应该只是通过执行来"开箱即用"
git config --global merge.tool araxis
Run Code Online (Sandbox Code Playgroud)
提供的araxis是我的PATH.
但是,由于几个原因,修改我的PATH不是一个选项,所以我需要能够指定正确的path或cmd在.gitconfig.
我应该如何配置Git(在OS X上)以便找到Araxis Merge?只要按照像其他工具的例子kdiff3,并p4merge用
git config --global mergetool.araxis.path /Applications/Araxis Merge.app/Contents/MacOS/Araxis Merge
Run Code Online (Sandbox Code Playgroud)
不起作用; 也不(猜测)
git config --global mergetool.araxis.path /Applications/Araxis Merge.app/Contents/Utilities/araxisgitmerge
git config --global difftool.araxis.path /Applications/Araxis Merge.app/Contents/Utilities/araxisgitdiff
Run Code Online (Sandbox Code Playgroud)
我该如何配置araxis.path?是否有其他Git设置应与Araxis Merge一起使用?
经过多次试验,我得到了这个简单的测试案例场景:
a --> b --> c -- (master)
\ \
--> d --> b' --> e (branch)
Run Code Online (Sandbox Code Playgroud)
哪里:
b' 是一个樱桃挑选 be是一个合并来自master.b'之后完成c并c修改了相同的文件b(d可能无关紧要).
e 很容易看起来非常意外.
假设所有'他们正在处理相同的文件" foobar.txt".这是文件在每次提交中的外观:
// ----------- a
foo
delme
bar
// ----------- b
foo
delme
new
bar
// ----------- c
foo
new
bar
// ----------- b'
foo
delme
new
bar
// ------------ e
foo
new
new
bar
Run Code Online (Sandbox Code Playgroud)
现在,这是我刚才的简短测试,具有这种确切的设置.
如果你删除那里的所有空格 …
我发现使用git子模块时,我经常遇到在包含给定子模块的提交和代表与普通目录相同的代码的提交之间合并的问题.小型复制示例:
# Create one project, to be used as a subproject later on
git init a
cd a
echo aaa > aa
git add -A
git commit -m a1
cd ..
# Create a second project, containing a as a normal directory initially
git init b
cd b
mkdir a b
echo aaa > a/aa
echo bbb > b/bb
git add -A
git commit -m b1
# Replace directory with submodule
git rm -r a
git submodule add ../a a …Run Code Online (Sandbox Code Playgroud) 我有gitlab存储库,我需要在合并到目标分支之前在本地测试每个合并请求.如何作为新分支提取/获取合并请求?