检测两个 git diff 之间的合并冲突,而无需访问原始存储库

2024-01-15

是否可以在不再访问存储库的情况下检测两个 git diff 之间的合并冲突?

例如:

$repo: git diff HEAD > ~/diff1
... do work, move branches etc
$repo: git diff HEAD > ~/diff2

$somewhereElse: git merge-diff ~/diff1 ~/diff2 ???? ??

编辑: 这是两个冲突的差异的示例,我们可以在不了解存储库的情况下分辨出来

diff --git a/schema.graphql b/schema.graphql
index 346rb8i42tg..3f0deee83ad 100644
--- a/schema.graphql
+++ b/schema.graphql
@@ -12,7 +12,6 @@ interface Thing {
 
 interface Being {
   name: String!
-  possessions: [Thing!]!
   lifeExpectancy: Float
   friends: [Being!]!
   optionalFriends: [Character]

diff --git a/schema.graphql b/schema.graphql
index 297fb5e764e..de9fbc233ac 100644
--- a/schema.graphql
+++ b/schema.graphql
@@ -14,6 +14,7 @@ interface Being {
   name: String!
   possessions: [Thing!]!
   lifeExpectancy: Float
+  surname: String
   friends: [Being!]!
   optionalFriends: [Character]
   isRebel: Boolean!

我的情况是有一个非常大的仓库,并且每个 git 操作对于我的需要来说都太慢了

Git 有处理这个问题的工具:分割索引 https://git-scm.com/docs/git-update-index#Documentation/git-update-index.txt---split-index立即想到的是最小结账合并。

最小检出合并不是一个单独的工具,它们只是 Git 的工作方式:合并不需要看到任何东西,除了要查看的文件。might需要自动合并,即在两个提示上都进行了更改,因此这就是您的工作树中实际需要的所有文件,如果您尚未设置它,它会为您进行检出,仅检查它需要的文件。

如果说你在dev并想要合并trunk:

git clone -ns . `mktemp -d`; cd $_
git reset -q         # load just the index

# note that when I do the above on the full linux history, a 2.8GB repo on my box, 
# the clone and index reload, the result occupies about 6MB total Basically nothing.

git merge trunk

并且只会检出可能发生冲突的文件。

如果您的索引太大以至于任何更新都很痛苦,请执行以下操作git update-index --split-index重置后,这将导致未更改的条目保留在边带/基线文件中,并且仅单独加载/重写更新的条目。

如果你想要推动结果,你需要协商HEAD更新你的主仓库,最简单的可能是git push origin HEAD:refs/heads/somenewbranch然后将您的主要存储库快进到该位置。做完之后git update-index --split-index他们的第一场比赛。

编辑:如果您想运行测试合并到任何其他分支,请添加-b thatbranch到克隆人。所有分支都是临时的和本地的,您可以git branch wip somecommit并克隆 -nsb wip 以重新飞行对该提交的合并。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测两个 git diff 之间的合并冲突,而无需访问原始存储库 的相关文章

  • git svn 克隆特定分支并合并

    我希望将我的代码库从 svn 迁移到 git 我的 svn 仓库中有太多分支 我只想克隆几个分支并将它们合并在一起并将其推送到 git 我想避免克隆所有分支 因为这需要很长时间 我该如何实现这一目标 完成后 我想定期从这些 svn 分支获取
  • 无法在 Eclipse 中运行从 Git 导入的项目

    我的 Eclipse 工作区中有一个来自 Github 的项目 通过 File gt Import gt Projects from GIT 但是 我无法运行该示例 因为 运行方式 下的唯一选项是 运行配置 转到 运行配置 后 我单击 浏览
  • 错误:无法锁定引用..“引用/标签”存在;无法创建“参考/标签/”

    当我尝试从 github 中提取更改时 出现奇怪的 无法锁定引用 错误 我尝试过 git gc 并查找类似的错误 但找不到解决方案 gt git pull error cannot lock ref refs tags v2 8 refs
  • 克隆/推送 Git Repos 时出错 443:访问错误,但未使用代理

    当使用 git 远程存储库进行这些操作克隆 推送时 我遇到了非常奇怪的问题 假设我正在尝试将更改推送到远程存储库 git push origin master 然后我会得到这个错误 致命 无法访问 Remote Repo 无法连接到 git
  • 读取 git 的最后一次提交和提交号

    在使用Git源代码的maven项目中 每当我使用maven编译构建时 是否可以读取git的最后一次提交和提交号 我想使用该提交编号来找到最后一次提交 这是假设您想要读取该信息 然后将其存储在属性文件中 基于https github com
  • git fetch 的默认远程

    如果我在当地的分支机构not跟踪任何远程分支 我发出命令 git fetch 鉴于我定义了几个遥控器 GIT DIR config 从哪个远程获取 我试图从man page https www kernel org pub software
  • 合并两个github帐户

    假设我有两个 github 帐户xyz 邮件 ID email protected cdn cgi l email protection and abc email protected cdn cgi l email protection
  • 撤消 git pull,如何将存储库恢复到旧状态

    有什么方法可以恢复或撤消 git pull 以便我的源 存储库将恢复到执行 git pull 之前的旧状态 我想这样做是因为它合并了一些我不想这样做的文件 但只合并了其他剩余的文件 那么 我想找回这些文件 可以吗 编辑 我想撤消 git m
  • 关闭 Sublime Text 3.2 中的 git 集成

    如果我想关闭 Sublime text 左侧装订线中的 GIT 集成 又名史莱姆绿线 我只需将其切换为 false 26 show git status false 但是 当在首选项中进行设置时 我收到错误 尝试解析设置时出错 意外的字符
  • 在 Windows 上为 Bitbucket 设置 SSH 密钥

    首先 我对 git repos 和命令行绝对是菜鸟 我在 Bitbucket 上有仓库 我基本上希望能够通过 gitbash 推送到存储库 而无需每次输入密码 我拥有的 Bitbucket 上的存储库已设置好代码 克隆存储库的本地目录 通过
  • 如何正确处理git中仅本地使用的文件?

    我想重新排序 git commits 中更改文件的输出 因此我创建了一个名为submodule orderfile并配置diff orderFile https git scm com docs git config指向该文件 现在出现了很
  • git receive-pack 以 0000 停止

    我对 git 很陌生 目前正在尝试在 opensuse 上使用 gitolite 和 trac 设置环境 我设法使用来自的脚本迁移旧的 svn 存储库http john albin net git git svn migrate http
  • gnutls_handshake() 失败:握手失败 GIT

    一切都工作正常 但突然我收到错误 致命 无法访问 https 电子邮件受保护 cdn cgi l email protection name repo name git gnutls handshake 失败 握手失败 我在我的计算机和 E
  • 如何在 Git 中重命名带注释的标签

    如何在 Git 中重命名现有的带注释的标签 我在存储库上有近一百个代表版本号的标签 每个标签都注释有有关该版本更改内容的有用描述 我想更改用于这些标签的命名样式 记录标签消息 删除标签 然后使用旧消息和新名称重新创建它 这对于手动为近一百个
  • 将远程存储库导入为具有完整历史记录的子目录

    我想将远程存储库作为具有完整历史记录的子目录进行合并和解耦 有多种方法和问题可以实现这一点 我的第一次尝试是使用subtree但它似乎没有重写文件的历史记录 所以我无法查看合并存储库的历史记录 接下来的尝试是手动合并它 就像 Seth Ro
  • 特定远程分支名称的 Git 列表

    如何获取某些远程源分支的所有名称 我从 remote list选项 但变得多余origin HEAD gt origin master来自另一个源的消息和分支 gt git branch remote list origin HEAD gt
  • git pull origin master 返回致命错误:无效的 refspec

    问题是这样的 每当我这样做时 git pull https github com username reponame github io git 接下来是网址 我没有遇到任何问题 但是当我这样做时 git pull origin maste
  • 如何将“develop”分支推送到远程“origin”?

    当我做git flow init它创造了一个master and develop分支机构 当我添加遥控器时git remote add origin email protected cdn cgi l email protection Ne
  • 无法重新索引 magento 1.7.0.2 卡在“处理”上

    我的 magento 索引中有九分之七停留在 处理 状态 我需要重新索引它们才能正确显示我的网站 我通过 ftp 访问我的 var locks 并删除其中的两个文件 但是当我刷新索引页时 它们只是重新出现 index process 3 l
  • Gitflow错误无法初始化

    我已经将 gitflow 安装在我的 github 项目所在的目录中 但是 当我尝试使用命令 启动时git flow init 我收到以下错误消息 git flow init C cygwin64 usr local bin gitflow

随机推荐