检测两个 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 之间的合并冲突,而无需访问原始存储库 的相关文章

  • 如何在 Visual Studio 2013 中隐藏未提交的更改

    需要一些帮助 了解如何使用 Visual Studio 2013 搁置 Git 存储库中未提交的更改 我来自 PHPStorm 您可以在一个分支上搁置未提交的更改 切换到另一个分支并取消搁置 但是 我无法找到 了解如何在 Visual St
  • git 分叉是如何工作的?

    所以我登录了 github 并 fork 了一个项目 每次原始存储库更新时 我的分叉存储库都会更新吗 或者我应该每次都从原始存储库进行分叉 这样我就不会错过对原始存储库所做的任何新更改 分叉是存储库的副本 分叉存储库允许您自由地尝试更改 而
  • 致命:早期 EOF 致命:索引包失败

    我用谷歌搜索并找到了很多解决方案 但没有一个适合我 我试图通过连接到 LAN 网络中的远程服务器来从一台计算机进行克隆 从另一台机器运行此命令会导致错误 但是在服务器上使用 git 192 168 8 5 运行相同的克隆命令 一切正常并且成
  • 无法将 android“gen”文件夹提交到 Git

    我在 eclipse 中使用 EGit 为我正在开发的 Android 项目提供 Git 支持 问题是 将我的项目提交到本地存储库后 我意识到 gen 文件夹没有被提交 因此 当我从 Git 存储库获取最新源代码后尝试在另一台计算机上打开该
  • 在 git 提交消息中使用任何 utf-8 字符是否安全?

    我发现使用 UTF8 字符 例如 很有用 请参阅here http www utf8icons com subsets dingbats 在提交消息中 重构 NewService 添加了更好的服务 OldServiceA 据我所见 它see
  • Python 无法在 git bash 命令行中工作

    Python 不会在 git bash Windows 中运行 当我在命令行中输入 python 时 它会将我带到一个空行 而不会像在 Powershell 中一样显示它已输入 python 2 7 10 它没有给我错误消息 但 pytho
  • 由于不存在大文件而导致 git Push 错误

    当尝试推送到 git 时 我不断得到相同的结果 Counting objects 78 done Delta compression using up to 4 threads Compressing objects 100 67 67 d
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • Git守护进程克隆错误

    All 我正在按照以下指示进行操作this SO https stackoverflow com a 377293 724357答案 快速提供回购 当我跑步时git clone git ipAddr git project我得到这个输出 r
  • 使用 Subversion 进行部分提交

    鉴于我做的案例两个独立的变化 in one文件 例如 添加了一个新方法并更改了另一个方法 我经常不想提交这两项更改 因为one提交 但作为two独立承诺 在 git 存储库上我会使用互动模式 of git 添加 1 http linux d
  • 使用 TortoiseGit 创建 git 克隆时出现 SSL 证书问题

    我想在 TortoiseGit 的帮助下克隆 git 存储库 但出现错误 错误 SSL 证书有问题 请验证 CA 证书是否正常 细节 错误 14090086 SSL 例程 SSL3 GET SERVER CERTIFICATE 访问时证书验
  • Git 中的“分支提示”是什么?

    我正在学习 Git 并阅读专业 Git 书籍 https git scm com book en v2 书中和 Stack Overflow 上有时会使用术语 分支提示 但我找不到它的含义 分支提示是分支上的最后一次提交或最近一次提交 基本
  • Eclipse 与外部 src 和 Web 内容文件夹链接或映射

    首先这不是问题但是我遇到的问题的解决方案浪费了4 5个小时来找到解决方案 请让我知道是否有更好的替代方法来使用 eclipse 项目管理外部 src 文件夹 我正在使用版本控制系统 GIT 来管理我的项目 还使用外部 Git 客户端 Sou
  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • 如何升级 Windows 中 git svn 使用的 SVN 版本?

    我的公司正在将SVN升级到1 7 检查git svn version显示正在使用的SVN版本是1 4 6 我想获得 git svn 使用的 SVN 版本接近 1 7 但是 我没有看到有关更新 git svn 使用的 SVN 版本 在 Win
  • Visual Studio Code 内置故事,用于查看 git 提交历史记录并对其内容进行比较

    In this https stackoverflow com questions 37899765 how can i view the git history in visual studio code 60013101 noredir
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • gitlab 请求将分支 A 合并到开发中(落后 3 次提交)我应该担心吗?

    在 gitlab 中创建合并请求时 我经常收到一条消息 请求将分支 A 合并到开发中 x 提交落后 gitlab想告诉我什么 我应该担心还是需要修复某些东西 什么 一段时间后合并请求在项目中打开时 由于其他人合并了自己的更改 您尝试合并到的
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

    这个问题在这里已经有答案了 当我尝试推送 github com 上的现有存储库时 当我输入命令时 网站提示我将其输入终端 我收到了以下致命错误消息 Not a git repository or any of the parent dire
  • 按时间顺序将多个文件夹提交到 git 中

    我有数百个网站备份 每个文件夹一个 我想将它们放入 git 存储库中 每个备份作为一个版本 这些变化主要涉及图像文件和每天 2 个数据库备份 大小约为 25 GB 并且不断增加 有没有办法告诉 git 获取其中一个文件夹并将其提交到存储库中

随机推荐