相关疑难解决方法(0)

是否有"他们的"版本的"git merge -s ours"?

当使用主题分支"B"合并到"A"时git merge,我会遇到一些冲突.我知道使用"B"中的版本可以解决所有冲突.

我知道git merge -s ours.但我想要的是类似的东西git merge -s theirs.

它为什么不存在?在与现有git命令冲突合并后,如何获得相同的结果?(git checkout来自B的每个未合并文件)

更新:从分支A(合并提交点到树的B版本)丢弃任何东西的"解决方案"不是我想要的.

git git-merge

818
推荐指数
11
解决办法
43万
查看次数

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

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

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

git git-merge

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

用于使一个分支像另一个分支的git命令

我试图采取一个变化的分支,并将其恢复为与它分离的上游相同.这些变化都是本地的,并且已被推送到github,因此它们都没有git reset或者git rebase真的可行,因为它们改变了历史,这对于已经被推动的分支来说是一件坏事.

我也尝试git merge了各种策略,但没有一个撤消本地更改,即如果我添加了一个文件,合并可能会使其他文件重新排队,但我仍然会有上游没有的文件有.

我可以在上游创建一个新的分支,但我真的很喜欢合并,在修订历史方面应用所有更改来获取我的分支并使其与上游相同,以便我可以安全地推动该更改没有破坏历史.是否有这样的命令或一系列命令?

git github branching-and-merging

70
推荐指数
4
解决办法
3万
查看次数

Git:合并公共和私有分支,同时保持两个分支中的某些文件完好无损

我在这里读了几个git问题,但找不到这个问题的答案:

我有一个公共和私人分支机构,我想允许某些文件发散.

这些是包含密码和本地自定义的配置文件.

我确实希望能够以两种方式合并分支:从私有到公共和返回,但我不希望自动合并这些特定文件.

有没有办法以这种方式设置git?我很想找到一个自动化解决方案:) - 这样可以像往常一样进行合并.


编辑:这是适合我的解决方案(感谢VonC对gitattribute的建议)

对我来说唯一意想不到的事情是"合并保护"只有在两个分支中的文件分歧后才开始工作,而不是在应用以下配置后立即开始工作

.gitattributes(如果你想分享这个,可以用git跟踪)或.git/info/attributes:

file1      merge=keepmine
path/file2     merge=keepmine
Run Code Online (Sandbox Code Playgroud)

keepmine是一个命名的自定义合并管理器,它只是一个do-nothing命令而不是所选文件的内部合并驱动程序,它在下面设置

从私人分支到公共分支合并时,我通常会这样做git merge --squash private.这样私有编辑就不会进入公共分支的git历史.

的.git /配置:

#public repository
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = <public repo git url> 

#private repository
#has to set up with git init and populated with the initial commit to branch mybranch
[remote "private"]
    push = +:
    url = /path/to/local/private/repo 
[merge "keepmine"]
    name = dont_merge_selected_files
    driver = echo %O %A %B 
[branch "master"]
    remote = origin
    merge …
Run Code Online (Sandbox Code Playgroud)

git merge dvcs

24
推荐指数
1
解决办法
3298
查看次数

Git合并他们:简单?

我已经检查了各种问题.第一个提供了一个巨大的问题和答案(相关的?不确定),第二个提供了错误的答案作为最佳答案.

我有一个叫做的分支great-use-this.我有另一个叫做的分支master.我想合并great-use-this到master中,并避免自动合并冲突.

什么是做到这一点最简单和最简单的方法是什么?

注意:我实际上已经想到了这一点(使用第三个分支ours,但是无论如何这对SO来说会很好.

git merge

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

我应该使用merge = union将.pbxproj文件与git合并吗?

我想知道.gitattributes中的merge = union选项是否适用于.pbxproj文件.

该选项的联机帮助页:

对文本文件运行3向文件级别合并,但从两个版本中获取行,而不是留下冲突标记.这往往会以随机顺序在结果文件中保留添加的行,用户应验证结果.

通常,对于将90%的文件添加到项目中的情况,这应该没问题.有没有人有这方面的经验?

git merge cocoa objective-c

20
推荐指数
2
解决办法
8575
查看次数

如何合并二进制文件?

我在my_branch中有一个二进制文件,当我需要对它进行更改时,git当然不会合并它.

所以我现在做的是:

git checkout my_branch
# make a change to gui.bin
mv gui.bin ~/
git commit -a
mv ~/gui.bin .
git commit -a
# git rebase to 1 commit
git checkout master
git merge my_branch
Run Code Online (Sandbox Code Playgroud)

但是有更简单的方法吗?

git

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

在git中跟踪sqlite3二进制文件的正确方法?

我维持一个回购的分支.

那个一直跟踪二进制文件(这是一个sqlite3文件)的repo.

每次我从该repo中提取时,由于该二进制文件,我都会遇到合并冲突.
解决这种合并冲突的正确方法是什么?

在git中管理二进制文件(如sqlite3*.db文件)的正确方法是什么?

git binary version-control github

7
推荐指数
1
解决办法
2936
查看次数

git策略使一组提交仅限于特定分支

我需要经常在dev和master之间进行合并.

我还有一个提交,我只需要应用于dev,以便在本地工作.

之前我只从dev合并到master,所以我有一个分支production_changes,其中包含dev特殊提交的"undo commit".从大师那里我合并了这个.习惯工作正常.

现在,每次我从dev合并到master,反之亦然,我必须一次又一次地挑选并应用相同的提交:(.这是UGLY.

我可以调整什么策略,以便可以在两个分支之间无缝合并,但仅在其中一个分支上保留一些更改?

git version-control

5
推荐指数
1
解决办法
477
查看次数

git 覆盖分支但保留历史记录

我想用另一个开发分支(即 master)覆盖开发分支中的所有内容,但我不想错过开发分支上较旧的提交。

这就是我要的:

我想要的是

我尝试与我们的策略合并进行硬重置,但开发分支不断丢失旧的提交。

我想要获得的是蓝色和红色之间差异为零的提交,以及在蓝色与第一个黑色差异时删除的代码。


只是分享迄今为止尝试过的解决方案的概述。通过做这个:

git checkout master
git merge -s ours dev
git checkout dev
git merge master
Run Code Online (Sandbox Code Playgroud)

我得到了这个(开发人员从主人那里获取了所有历史记录)

合并

通过做这个

git checkout dev
git reset --hard master
Run Code Online (Sandbox Code Playgroud)

我得到了这个(如果我推动开发,我将丢失所有黑色提交):

重置

如果我这样做:

git checkout dev
git merge $(git commit-tree -p dev -m "Align master > dev" master^{tree})
Run Code Online (Sandbox Code Playgroud)

我得到了这个(几乎完美,但我很难回忆起我完成这个技巧的确切时刻):

在此输入图像描述

git

5
推荐指数
1
解决办法
1647
查看次数

Git rebase和半跟踪的每个开发人员配置文件

这是我的第一个问题,我也是Git的新手.

背景:在我的约8位开发人员小组中,我应该是Git的版本控制大师.由于我没有很多Git经验,这很令人兴奋.我决定需要一个共享存储库,它将是生产代码的权威主数据库和开发代码的主要会合点.当我们为公司工作时,我们确实需要至少显示生产代码的授权来源.

我已经指示开发人员在从共享存储库中提取时进行pull-rebase,然后推送他们想要共享的提交.我们遇到了特定类型文件的问题.

其中一个文件,我目前认为是典型的问题,称为web.config.我们想要一个版本控制的主web.config供开发人员克隆,但是每个开发人员都可以对这个文件进行少量编辑,他们希望在本地保存但不共享.

问题是这样的:我如何告诉git 考虑本地更改或提交此文件以进行变基和推送的相关性?Gitignore似乎没有解决问题,但也许是因为我把web.config放入.gitignore太晚了?

在一些简单的情况下,我们堆叠了本地更改,重新定位,推送和弹出堆栈,但这似乎并不是一直都有效.我还没有拿起这个模式.

关于pull --rebase的已发布文档倾向于处理更简单的情况.

或者我完全有错误的想法?我们在滥用Git吗?

Dougkiwi

git

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

如何使用Git远程URL的环境变量

我维护了一小部分我自己的git存储库,有时候,我想更改我存储'master'存储库的机器或目录.不幸的是,这会导致存储库的所有工作副本中断.

有没有办法在"远程"路径中为我的本地工作副本使用环境变量?

如果没有,是否有一种简单的方法可以欺骗Git(除非是一个强力sh脚本扩展变量,在推送之前将其移除并重新分配到远程位置等)在推拉时扩展变量?

git version-control environment-variables

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