我有以下目录结构:
/.git
/.git/info/attributes
/MyProject
/MyProject/pom.xml
/MyProject/MyCode.java
Run Code Online (Sandbox Code Playgroud)
我有分支主和bugfix.在两个分支上都修改了pom.xml和MyCode.java.我想将仅来自bugfix的更改合并到MyCode.java的master,并保留pom.xml文件的主版本.
所以我添加了"/.git/info/attributes"因为我不想在项目中提交.gitattributes
$cat .git/info/attributes
pom.xml merge=ours
$git status
# On branch master
nothing to commit (working directory clean)
$git check-attr -a pom.xml
pom.xml: merge: ours
Run Code Online (Sandbox Code Playgroud)
最后到了问题:
当我做:
$git merge bugfix
Auto-merging MyProject/pom.xml
CONFLICT (content): Merge conflict in MyProject/pom.xml
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)
Git忽略了属性设置.我在这里失踪了什么?
我不想在这篇文章中定义"keepMine.sh"
这篇文章是我需要的,但是如果我有一个简单的模式,我宁愿不逐个文件
谢谢!
我有一个主人和我的(网络)应用程序的测试分支.这些项目几乎相同,只有一个设置应用程序的文件,比如说"setup".
每当我将一个分支合并到另一个分支时,我希望该分支保持其版本的设置.也就是说,git不应该尝试将更改合并到该文件.
我按照Pro Git书中的指导创建了一个.gitattributes文件,其中包含"setup merge = ours"行.但是,这不起作用 - 如果我引入冲突,也不能快速合并.
(确切地说:
$: mkdir gitest
$: cd gittest
$: git init
$: echo "setup merge=ours" >> .gitattributes
$: echo "master" >> setup
$: git add setup .gitattributes
$: git commit -a -m ...
$: git branch test
$: git checkout test
$: echo "test" >> setup
$: git commit -a -m ...
$: git checkout master
$: git merge test
Run Code Online (Sandbox Code Playgroud)
预期结果:setup包含单词"master",而git执行ff merge并且setup是"test".)
我的git存储库有2个分支:master和develop.我想要一个脚本,自动将所有更改从开发合并到主.
我使用了Jenkins:Git插件克隆了存储库,然后运行了这个脚本('version'变量是一个作业参数):
# merge
git checkout -b develop origin/develop
git checkout master
git merge -Xtheirs --squash develop -m "v${version}"
# commit
git commit -m "v${version}"
# tag
git tag v${version} -m "v${version}"
# push
git push origin v${version}
Run Code Online (Sandbox Code Playgroud)
我在测试存储库上尝试了它,它失败了:
git merge -Xtheirs开发
CONFLICT(删除/修改):在开发中删除test.txt并在HEAD中修改.test.txt的版本HEAD留在树中.
自动合并失败; 修复冲突,然后提交结果.
如何自动解决此冲突?我希望脚本总是根据'develop'分支添加/修改/删除文件,因为无论如何都不会触及master ...