合并后提交 ID 是否保持不变?

2024-03-23

我的团队使用 git 和 Bitbucket 进行版本控制。

我之前创建了一个从我的存储库的分支之一到团队主存储库的分支之一的拉取请求。

这个拉取请求被接受,我的分支被合并。

昨天,我对存储库中的同一分支添加了一些更改。当我尝试向团队存储库上的同一分支创建拉取请求时,我收到一些合并冲突的通知。

我查看了团队分支的提交日志,发现虽然提交消息、作者(我)和日期相同,但远程分支中的提交 ID 不同。

这里可能有什么问题?

我的印象是,即使在合并提交之后,提交 ID 也会被保留。

可能是其他原因造成的吗?

附: 我读过cherry-pick可以更改提交 ID。有什么想法吗?


合并既不保留也不不保留提交 ID。合并使new提交(假设您以避免“快进”操作的方式执行这些操作)。

也就是说,给定一系列单独的提交,我将用单个字母标记:

A - B - C
      \
        D

commit C(这可能真的是 ID6da748a...)已提交B它的父级,并提交D(也许实际上740c281...)也有提交B作为其父级。要合并这两个提交,git 必须创建一个新的提交two父母:

A - B - C - M
      \   /
        D

这个新的提交M与其他提交有不同的 ID,但提交D完全没有改变,因此仍然具有相同的 ID (740c281...).

许多人试图避免进行这种相对琐碎的合并。而不是拿走他们的工作(提交C)和你的工作(提交D)并进行新的合并提交,他们会复制您的提交消息(包括作者和日期)并进行相同的更改C你所做的B。这个操作确实被称为“cherry pick”(也称为“rebasing”),但它会产生一个新的、不同的提交,我们可以称之为D',使用新的、不同的提交 ID:

A - B - C - D'

和原来的最明显的区别D和这个新的D'就是它D'已提交C作为其父级,而不是提交B。 (在正常情况下,它也有不同的树内容,因为您的B-to-D更改已应用于版本中所示的文件C,在某些地方可能与B.)

Commit D'不是一个merge然而,请承诺。 (合并提交是具有至少两个父提交的任何提交。使用git log --graph or gitk或其他一些图形查看器可以更直接地查看提交图。)

如果您的工作被重新定位(或精心挑选)到上游,并且您获取并尝试合并上游,git 有时(但并非总是)能够检测到重复并自动清理。当它无法自动检测重复时,您几乎总是会遇到各种合并冲突:git 看到您试图更改一些代码(在您的提交中)D在上面的例子中),他们试图改变相同的代码,但以稍微不同的方式(在他们的提交中)D'在上面)。出于这个原因,通常不认为对别人的代码进行变基是非常礼貌的:相反,上游往往会要求您自己对代码进行变基(尽管它仍然是您私有的),然后他们可以将其作为“快进”(合并-免费)添加到他们的存储库中。

(这样您还可以自己进行变基操作所需的任何更改。例如,如果您修复了版本中的错误D他们也固定在他们的C,但是你和他们采取了不同的方法,你可以解决这个冲突——可能比他们更容易,因为你知道你做了什么,为什么这样做,以及你的新功能是否依赖于your修复版本。)

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

合并后提交 ID 是否保持不变? 的相关文章

  • Git:压缩 master 上提交的最简单方法[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 git 将最后 X 次提交压缩在一起 https stackoverflow com questions 5189560 how can i squash my last x commits
  • git Blame:合并后正确的作者

    GIT 合并引入了新的提交 这会导致 git Blame 问题 合并的行似乎是由进行合并的开发人员提交的 我可以理解这种情况冲突的变化 因为他解决了冲突 但是有没有办法让非冲突线路不发生这种情况呢 一些 git Blame 的选择 如果没有
  • 致命:无法将 HEAD 解析为有效引用

    我正进入 状态fatal Failed to resolve HEAD as a valid ref 每当我尝试承诺时 我努力了 echo ref refs heads master gt git HEAD 但它不起作用 也尝试过 git
  • GIT - 推送到 (GitHub) origin master 没有任何作用

    我已经分叉了某人的 GIT 存储库 https github com nippysaurus toodledo objc 将其克隆到我的本地计算机 显示带有以下信息的来源 remote origin Fetch URL https emai
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • Mercurial 到 Bitbucket - 子存储库 - 存储库是不相关的错误

    以下是我构建存储库和子存储库所采取的步骤 一切都托管在 Bitbucket 上 根据最佳实践 创建了一个骨架存储库来保存所有子存储库 克隆到我的机器上 将主项目克隆为 subrepo1 在 mainrepo 目录结构内 将主项目添加到 ma
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • Spring Cloud Config - 不允许使用 git-upload-pack

    我有一个在 docker 环境中运行的 spring boot 应用程序 它连接到 Git 存储库以获取应用程序的配置 我的问题是 当尝试获取 properties 文件时 应用程序有时会出错 这很奇怪 因为如果我更改用户和密码 同一个应用
  • 为别名命令添加“git help”?

    我已经实现了一个 Git 命令并使用 git 别名将其连接到 Git 但是有没有办法连接 Git 帮助 我在 Windows 上运行 如果我发出git help mycmd我收到一个弹出窗口 告诉我 Git 找不到 git mycmnd h
  • http.h:6:23: 致命错误:curl/curl.h:没有该文件/目录

    我在 CentOS 7 中下载 git 包 wget https www kernel org pub software scm git git 2 0 1 tar gz tar xzf git 2 0 1 tar gz 当我编译git时
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • 使用 GitHub,在添加现有存储库时如何推送所有分支?

    我创建了一个新的 GitHub 存储库 我想将现有的存储库放在那里 我按照说明操作 cd existing git repo git remote add origin email protected cdn cgi l email pro
  • Heroku 应用程序上的 Nodejs Express EACCES 0.0.0.0:80

    我正在尝试在他们的网站上新创建的 Heroku 应用程序上运行 Node 应用程序 我按照他们的步骤操作 但在显示应用程序状态时仍然遇到错误 我跟着Node js 入门 https devcenter heroku com articles
  • 为什么cherry-pick 告诉我所有行都已更改?

    Updated 考虑文件 abc 在提交 A 和 B 中都相同 begin 123 456 789 klm end 在A中 我们重构第一行123 gt AAA并在结果之上选择 B Git 告诉我们all lines in the file
  • VS Code 在交互式变基期间不会等待我 [重复]

    这个问题在这里已经有答案了 如果我使用交互式变基git rebase i使用为 Git 配置的默认编辑器 一切都运行良好 如果我在我的全局中添加以下内容 gitconfig core editor C Program Files x86 M
  • 有什么方法可以从提交的消息中获取提交的 SHA 值吗?

    当做一个git tag 我并不总是擅长记住 HEAD 6 例如 是包含的还是排他的 鉴于我的大多数提交都以问题号为前缀 我想知道是否有一些神奇的命令可以从其消息的一部分中搜索提交 SHA 我知道这很容易做到git log并从那里开始工作 但
  • git rebase 吃了我的提交!为我翻译“git reflog”输出?

    我已经完成了五次提交 我想在推送它们之前将它们全部合并为一次提交 出于某种原因 我决定尝试通过与通常使用的不同的方式来做到这一点 FWIW 我试图按照此处的说明进行操作http gitready com advanced 2009 02 1
  • 使用nodegit切换分支/标签

    我整个早上都在尝试打开现有的存储库并使用 nodegit 更改分支或标签 文档内容很丰富 但似乎已经过时了 关于我做错了什么有什么想法吗 var NodeGit require nodegit var open NodeGit Reposi
  • 是否可以使用“git gc”来打包引用日志对象?

    正如答案所暗示的https stackoverflow com a 32025729 https stackoverflow com a 32025729我已经配置了远程裸仓库 git config gc pruneExpire never

随机推荐

  • 类转换的任何替代方法

    以下语句在某些设备上不执行 AddEvent act1 AddEvent getLocalActivityManager getCurrentActivity 上述陈述是否有任何替代方法 在某些设备上它工作正常 但在其他设备上却出现异常 E
  • 使用 apache2 全新安装后 phpMyAdmin 无法工作

    当我尝试访问 phpmyadmin 页面时 我收到以下错误
  • 从 C# 向进程发送 CTRL_C/SIGINT

    我想中断通过 cmd exe 运行的命令 在下面的代码中 我使用 ping www stackoverflow com t 作为示例 public void Run System Diagnostics ProcessStartInfo s
  • 雪豹上的 Java5

    我需要 Java 5 不是 6 但 Snow Leopard 仅附带 Java 6 有 System Library Frameworks JavaVM framework Versions 1 5 但这仅仅指向1 6 0 ls la Sy
  • Numpy 字符串编码

    numpy 模块是一个出色的工具 可以有效地存储 Python 对象 其中包括字符串 对于 numpy 数组中的 ANSI 字符串 每个字符仅使用 1 个字节 然而 有一个不便之处 存储对象的类型不再是string but bytes 这意
  • 如何找到模板函数接受的参数数量?

    我有以下类型特征 template
  • nHibernate 和 sqlite 映射

    我在使用 sqlite 设置 nHibernate 时遇到了真正的问题 这是 hibernate cfg xml 文件
  • python中socket编程的疑惑

    我遇到了麻烦并且有很多关于套接字编程的问题 下面附上代码 所有部分均取自并写在一起 我正在尝试将鼠标数据发送到客户端 但是出现错误 Traceback most recent call last File srvr py line 29 i
  • 以多选形式显示先前选择的选项(rails)

    我已经构建了一个多选表单 从 form for 中 如下所示 div class rounded block quarter wide radio group h4 Exclude customers from source h4 div
  • 匹配除字母之外的任何内容 - 正则表达式

    如何匹配除字母以外的任何内容 我想 a z 会做但不是真的 我有这个字符串要搜索 price 7 99 opt 1 1 01 1 02 mixedId 0 price 8 99 opt 3 1 03 4 1 04 1 05 我想得到这些值8
  • django 通道 websocket 连接不工作

    我正在尝试从服务器上的 django Channels examples 运行多聊天项目 它可以在 Windows 计算机上本地运行 但是当我将其放在 Linux 服务器上并使用 runserver 启动它时 它不会 manage py r
  • C# 浮点精度

    谁能向我解释一下这里发生了什么 using System using System Text namespace ConsoleApplication1 class Program static void Main string args
  • Excel 2016 中的 VBA - 在代码中设置打印机设置

    我已经在互联网上搜索过 但找不到确切的解决方案 我需要能够从我的 VBA 代码中设置用于打印的颜色和双面设置 我的目的是使用 VBA 用户窗体按钮来格式化并打印工作簿中的表格 我的缩写代码是 Application PrintCommuni
  • 最佳实践(jQuery、CSS):如何初始化将切换可见的隐藏元素?

    堆栈警告我这是一个主观问题 并且可能很接近 但无论如何我都会尝试这个 我有一组控制按钮附加到图库中的图片 这些最初是隐藏的 当鼠标悬停在图像上时切换可见 我的问题是这样的 这些按钮应该在样式表中设置为隐藏 还是保持可见并在加载时由 jQue
  • 启动 mongod.exe 时,出现缺少 api-ms-win-crt-runtime-l1-1-0.dll 的错误

    在 Windows 7 上启动 mongod exe 时出现错误 程序无法启动 因为您的计算机缺少 api ms win crt runtime l1 1 0 dll 尝试重新安装该程序来解决此问题 安装了VC net框架和vc redis
  • tf.transpose 是否也会更改内存(如 np.ascontigouslyarray )?

    如果我使用tf transpose它也会改变内存布局吗 在 numpy 中 它使用函数np ascontiguousarray 我的意思是 如果我使用 cuda 这将很重要 因为内存布局是 N C H W 或 N H W C 会有所不同 N
  • 从推送通知中获取错误

    在我的应用程序中 我需要推送通知 我正在实施推送通知文档中的所有说明 但我从推送通知中收到错误 Fail To Register For Remote Notifications With Error Error Domain NSCoco
  • 使用异步套接字服务器的优点

    在什么情况下我们应该使用异步套接字 Tcp 或 Udp 服务器而不是同步套接字服务器 如果是在客户端 我知道我们曾经使用异步 这样它就不会阻塞 UI 线程 但我不确定为什么我们需要在服务器端使用异步 在服务器端 允许客户端并行处理非常重要
  • 对于这个实体层次结构来说,什么是好的持久性设计?

    我是 JPA 新手 正在尝试制定以下课程的设计 所有类都重写了 equals 和 hashcode getter 和 setter 以及空构造函数 我有一个所有实体的基类 public abstract class BaseEntity p
  • 合并后提交 ID 是否保持不变?

    我的团队使用 git 和 Bitbucket 进行版本控制 我之前创建了一个从我的存储库的分支之一到团队主存储库的分支之一的拉取请求 这个拉取请求被接受 我的分支被合并 昨天 我对存储库中的同一分支添加了一些更改 当我尝试向团队存储库上的同