相关疑难解决方法(0)

我怎么告诉git总是选择我的本地版本来解决特定文件上的冲突合并?

假设我通过git存储库与某人合作,并且有一个特定的文件,我永远不想接受任何外部更改.

有没有办法让我设置我的本地仓库,以便每当我拉动时不抱怨冲突的合并?我想在合并此文件时始终选择我的本地版本.

git git-merge

94
推荐指数
2
解决办法
4万
查看次数

告诉git在特定文件上使用我们的合并策略

我有以下目录结构:

/.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"

这篇文章是我需要的,但是如果我有一个简单的模式,我宁愿不逐个文件

谢谢!

git git-merge

21
推荐指数
2
解决办法
1万
查看次数

Git合并策略'他们'不解决修改/删除冲突

git merge使用以下选项执行a 时:

git merge -X theirs master

偶尔会有冲突的文件:

CONFLICT(修改/删除):在master中删除File_A.java并在HEAD中修改.File_A.java的版本HEAD留在树中.

但是,我希望-X theirs在这些情况下识别该选项,并使用theirs更改的版本,该版本用于删除该文件.

是否有原因导致此类冲突无法自动解决,特别是因为我提供了一个特定的合并策略,建议它应该删除该文件?

此外,如何(如果可能)我可以更新我的merge命令以使用theirs此类冲突的版本?

git

21
推荐指数
2
解决办法
3275
查看次数

git涂抹/清除分支之间的过滤器

有很多相关的问题涉及涂抹/清洁过滤器 - 我花了几个小时阅读它们,并尝试各种选项,但仍然失败.我希望我能以某种方式询问我得到的答案对我有用.

具体来说,我已经阅读了大部分这些答案链接回来的页面:


TL;博士

这是一个详细的问题,但摘要是:

  • 我可以将DEBUG = false文件存储在一个分支上,DEBUG = true在另一个分支中,使用涂抹/清除过滤器来管理该文件吗?如何?

背景

我在bitbucket有各种远程回购.我在Win8上使用SourceTree,将远程存储库克隆到我的笔记本电脑上.我为开发,功能,发布等创建了不同的分支(遵循一个成功的Git分支模型,无论好坏).

我有一个名为的Android java类Dbug.java,它包含一个布尔值,可以在我的代码中打开/关闭各种调试日志记录,模拟等功能.

public static final boolean DEBUG = false;
Run Code Online (Sandbox Code Playgroud)

我希望这个值false在我的"生产"(主)分支上,并且true在我的功能分支上.

  • 这可能是使用过滤器,还是我已经误解了用例?
  • 我不确定过滤器是否在同一本地托管的仓库的两个分支之间如此工作,或者过滤器仅在2个回购之间工作.

创建过滤器

在本地工作,我检查了生产分支.我创建了一个debug_flag.txt使用以下内容调用的测试文件:

// false on production branch
// true on other branches
DEBUG = false;
Run Code Online (Sandbox Code Playgroud)

我在我的本地仓库的根目录中创建了一个文件.gitattributes并添加了过滤器引用:

debug_flag.txt filter=debug_on_off
Run Code Online (Sandbox Code Playgroud)

.git/config用过滤器定义更新了文件:

[filter "debug_on_off"]
    clean = sed -e 's/DEBUG = true/DEBUG = false/'
    smudge = sed -s …
Run Code Online (Sandbox Code Playgroud)

git gitattributes

17
推荐指数
1
解决办法
4027
查看次数

什么是合适使用.gitattributes与merge =我们的

我刚刚尝试过第一次使用.gitattributes.我认为我必须做错事,因为它没有工作,因为我认为使用merge=ours属性的目的是为了(?).

我用法的一个例子:

我有两个分支; 一个是"主人",另一个是"GCE-Site"."GCE-Site"分支上的文件具有不同的设置,这些设置也存在于"master"分支上,我不想合并到"master"[或其他分支].

在这两个分支上,我有一个.gitattributes包含以下规则:

README.md merge=ours
config.php merge=ours
.gitattributes merge=ours
.gitignore merge=ours
.cache/ merge=ours
Run Code Online (Sandbox Code Playgroud)

需要规则的所有文件都在根级别加上.cache /文件夹上的所有内容.当我这样做时git merge GCE-Site,所有文件仍然在我不想要的时候合并到主服务器中.

有什么我想念的吗?非常感谢您的帮助.日Thnx

git merge attributes bitbucket

11
推荐指数
2
解决办法
8195
查看次数

gitattributes没有正确设置合并驱动程序

我有以下目录结构:

project/
    .git/
        ...
    app/
        ...
    config/
        initializers/
            braintree.rb
        environments/
            production.rb
    .gitattributes
Run Code Online (Sandbox Code Playgroud)

我的项目使用两个主要分支,主分支和分段,每个分支跟踪不同的远程(生产和暂存heroku应用程序).

我们的想法是,分段分支随着新功能向前移动,它们被推送到临时远程控制台并进行测试,然后快速转发主分区以匹配分段并推送到生产远程.

这就是我想要做的事情:自由合并这两个分支,同时保持它们的版本braintree.rbproduction.rb分离.

为了实现这一点,这里是我提出的.gitattributes(根据ProGit书):

config/initializers/braintree.rb merge=ours
config/environments/production.rb merge=ours
Run Code Online (Sandbox Code Playgroud)

该文件存在于两个分支中.

我遇到的问题是,这似乎对任何事情没有任何影响.每当我在两者之间合并时,无论如何文件都会被更改,我必须再次更改它们.

我有一种感觉,我错过了一些非常明显的东西,但到目前为止它正在逃避我.我知道其他答案涉及创建自定义合并驱动程序,但ProGit书中没有提到这个过程,似乎暗示ours驱动程序是内置的(我已经在手册页中看到过它,所以我是相对确定它是).我能想到的另一件事就是我以某种方式放.gitattributes错了地方或弄乱了它的内容,但我找不到太多关于此的信息.我已经尝试将它移动到与文件相同的目录,但无济于事.

如果它有任何帮助,我在OS X上运行git版本1.7.2.任何帮助将不胜感激.

git git-merge gitattributes

8
推荐指数
1
解决办法
3205
查看次数

.gitattributes合并策略

我尝试将合并策略添加到我的存储库中的.gitattributes文件中.但是当我将另一个分支与该(不同的)文件合并时,会导致合并冲突 - 自动合并失败.

这是我尝试做的事情.

.gitattributes:

backend/library/project/config.php merge=ours
Run Code Online (Sandbox Code Playgroud)

分行:

  • 生产
  • 分期

在生产中我有config.php'A,并在分阶段我有config.php'B.

> git checkout production

> git merge staging 

> Auto-merging backend/library/project/config.php
> CONFLICT (content): Merge conflict in backend/library/project/config.php
> Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)

我尝试将行添加到.git/info/attributes以及向.merge ="ours"添加引号.

有谁知道我做错了什么?(Git-version是1.7.4.4)thx

git

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

git ×7

git-merge ×3

gitattributes ×2

attributes ×1

bitbucket ×1

merge ×1