Git-Svn dcommit 导致分支分裂

2024-01-08

我遇到了 git-svn dcommits 问题,导致 git 存储库无法跟踪哪些提交。

我尝试确保 git 中的 master 分支始终遵循 SVN 存储库中的 trunk。所以每当我工作时,我都会在一个主题分支上。这是我的场景:

在主题分支工作一段时间

git checkout -b my-topic
git commit -m "blah blah blah"

然后我决定将我的分支合并回 master

git checkout master
git svn rebase #get any changes in svn
git rebase master my-topic
git merge my-topic --ff-only

到这里为止,一切都很顺利。现在,我的 master 和 my-topic 都已达到最新状态并指向同一个提交,整个历史记录如下所示:

A -- B -- C - master + my-topic

然而,当我这样做时

git svn dcommit

我最终得到一棵看起来像这样的树(B 和 C 是我最初对该主题所做的提交):

  -- B -- C - my-topic
 /
A -- B -- C - master + remotes/trunk

似乎在 dcommit 过程中,git 将提交推送到 SVN,然后在 master 上重放它们。我认为问题在于他们获得了不同的提交者信息。我正在使用 tortoise plink 和 SSH 密钥登录 svn。

git 存储库中尚未推送到 SVN 的提交的提交者信息如下:

Collin Hockey <[email protected] /cdn-cgi/l/email-protection>

已推送到 svn 存储库的提交具有以下内容:

chockey <chockey@6206317d-b652-48a9-a948-4036602fc523>

有什么办法可以防止这些树枝分裂吗?我可以通过说来解决它

git rebase master my-topic

再次,但我觉得这应该是不必要的。这样做的主要问题是,一旦分支的更改被推送到 SVN,git 就不再认为该分支已在任何地方合并。删除不再需要的旧分支会让人感到困惑。


The git svn dcommit命令的工作原理如下:

  1. 查找来自 SVN 的最后一次提交;我们就这样称呼它吧last-svn
  2. 发送范围内的提交last-svn..HEAD到 Subversion(顺便丢弃电子邮件)
  3. 重置HEAD to last-svn
  4. 从 SVN 更新并创建相应的提交

换句话说,您发送到 SVN 的提交将被销毁,并根据 SVN 的更新重新创建。这一定会发生,因为来自 SVN 的提交与使用 Git 创建的提交不同:

  • 他们的描述包含对 SVN 修订版的引用
  • 他们的作者电子邮件是根据 SVN 用户名计算得出的

这就是为什么你的分行my-topic偏离master.

您可以自定义方式git svn dcommit根据 SVN 用户名计算作者电子邮件--authors-file and --authors-prog选项。

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

Git-Svn dcommit 导致分支分裂 的相关文章

  • .gitignore 文件夹内容[重复]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上忽略 Git 存储库中的目录 https stackoverflow com questions 343646 ignoring directories in git repos
  • 如何损坏 Git 存储库?

    创建损坏的 git 存储库有哪些方法 有没有有趣的方法可以永久损坏 git 存储库 你能否削弱一个 git 存储库 使其行为有些正常 但会做一些奇怪的事情 我的兴趣来自于当有人担心他们是否真的创建了不可恢复的状态时 它通常很容易修复或至少可
  • 如何避免开发人员将凭证推送到 bitbucket?

    我们有一个应用程序 它使用 JSON 文件来定义数据库和其他 API 的连接字符串和凭据 理想情况下 这些凭证作为变量添加到 bitbucket 存储库中 并在 Jenkins 的构建期间进行替换 开发商在当地与他们合作时更换了他们 我们需
  • 如何获取第一次提交的 Git diff?

    我创建了一个存储库 在其中创建了一个文件 在文件中放入了一些内容 然后提交了该文件 现在 我想查看该提交的差异 理想情况下应该显示添加的文件以及添加到其中的行 然而 git diff HEAD HEAD回报fatal ambiguous a
  • web2py git 集成 - localhost 和 pythonanywhere

    我完全不知道如何将 Github 集成到 web2py 中 我在 USB 上安装了 web2py任何地方的Python http www pythonanywhere com web2py概述文档chapter3http web2py co
  • Eventmachine start_tcp_server 无接受器 - 端口正在使用或需要 root 权限(运行时错误)

    我已经 3 天无法运行本地服务器了 重新启动我的计算机没有帮助 有几次 在反复尝试大约 40 50 次之后 它随机地起作用了 我不明白为什么 我尝试过一次不同的端口并且有效 但从那以后 没有端口有效 每次我尝试运行我的 Rails 服务器时
  • 本地git,推送到tfs远程repo

    我厌倦了向我的队友解释使用 DVCS 相对于 CVCS 的好处 他们中的一些人害怕学习曲线 另一些人则看不出任何原因 因为对他们来说 这都是一样的 就我个人而言 我对 TFS 及其问题感到非常厌倦 每当我需要进行一些小的 修复 时 我都必须
  • 为什么在 Eclipse 中对 Egit 管理的项目禁用合并工具?

    根据Egit 用户指南 http wiki eclipse org EGit User Guide Using Merge Tool 要使用合并工具 应右键单击存在合并冲突的资源 然后选择Team gt 合并工具 但是 当我执行此操作时 合
  • 如何标记单个文件?或如何下载特定文件? - 胃肠道

    我想向文件添加标签以轻松下载该文件而不是整个分支 如何下载GIT中的特定文件 我不知道有什么方法可以标记特定文件git 对于第二个问题 如何下载特定文件git 仅当您的意思是 同时下载 时 以下内容才有效in a git存储库 这就是我理解
  • 重新整合工作流程

    各位专家您好 我这个 Tortoise SVN 的老新手 问一个简单的问题 我正在一个分支上工作 现在想将分支中的更改 提交后 合并到主干 但是我不确定正确的工作流程 在解决所有可能的冲突后 我是否应该首先将主干合并到我的工作副本 然后将我
  • 当出现错误时如何删除远程分支?

    我尝试过以下命令 但失败了 git push origin next remote error denying ref deletion for refs heads next To blah git remote rejected nex
  • 返回到存储库中的特定修订后提交并推送更改?

    我们需要及时返回到某个特定的提交 一些意外的改变是为了掌握 尝试恢复它挖得太深 所以 master 的状态很糟糕 现在我们希望master回到66ada4cc61d62afc 根据git 恢复到某个提交 https stackoverflo
  • 如何查看 github 的 SSH 密钥?

    我最近收到一封来自 Github 的电子邮件 要求我检查我的 SSH 密钥 请检查您的钥匙并确保您 认出他们 如果您有任何疑问 请拒绝钥匙并 上传新密钥 如何在 ubuntu 11 10 上使用 git 检查我的密钥 您可以按照 GitHu
  • 如何使用 vim 作为“git show”编辑器?

    全部如所述如何使用 vim 作为 git log 编辑器 https stackoverflow com questions 16666009 how do i use vim as git log editor不适用于 git show
  • 递归删除属性

    Tortoise SVN 可以选择递归地将属性应用于所有子文件夹 子文件 现在我需要删除这个属性 我怎样才能递归地做到这一点 我没有找到如何使用 GUI 递归删除属性 但您可以使用 svn 命令行工具删除属性 svn propdel PRO
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • TeamCity 将功能分支推送到主分支

    有没有办法将成功构建的功能分支推送到另一个分支 我想要这样的东西 Git 存储库 Gitorious GitHub 等 分支机构 master 当前项目的代码 质量保证 代码等待 QA 的分支 功能分支 许多远程分支 开发人员可以在其中开发
  • Visual Studio Code 内置故事,用于查看 git 提交历史记录并对其内容进行比较

    In this https stackoverflow com questions 37899765 how can i view the git history in visual studio code 60013101 noredir
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

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

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

随机推荐

  • ts-node 将选项传递给节点

    有没有办法在调用 ts node 时将选项传递给节点 我正在尝试在 Node 中使用一个实验性功能 如果它能与 ts node 一起使用 那就太好了 这就是我目前正在做的事情 ts node src utils repl ts experi
  • 抽象类的命名约定

    我清楚地记得 曾经 微软推行的指导方针是在抽象类中添加 Base 后缀 以消除它是抽象的事实 因此 我们有这样的课程System Web Hosting VirtualFileBase System Configuration Config
  • spring 工具套件 4 中的内容自动完成

    内容的自动完成功能在 spring 工具套件 4 中不起作用 我已经检查了设置 谁能告诉我如何解决这个问题 例如 如果我进入数学 gt 并按 ctrl 空格键获取建议 它不显示默认模板 In the 自动激活部分填写自动激活触发器对于Jav
  • 如何禁用产品图片的缩放效果?

    我正在使用 Weebly 创建一个在线商店 使用模板并遇到了我不喜欢的东西 每次用户单击产品时 都会出现产品页面 如果将鼠标悬停在产品图像上 则会初始化缩放功能 如何禁用此效果 我有一种感觉 就像 display none 一样简单 但我似
  • 避免在 es6 中导出单例

    正如我所见 ES6 导出对象文字的单例 module A export const singleton user a asd b setTimeout gt console log singleton user 5000 asd modul
  • 如何在 Widget Service 类中检索共享首选项数据,而不传递错误的默认值或出现空指针错误?

    我正在尝试在我的应用程序中运行一个小部件 小部件数据 同步频率 用户名等 在 WidgetConfig 类中决定 然后它打开一个小部件提供程序 该提供程序创建小部件 最后一个服务更新视图并调用服务器来更新数据 Here is some of
  • 渲染错误;无法解析@id/search_edit_frame

    我遇到一个错误 提示无法解决 id search edit frame我不知道为什么 我尝试过文件 gt 无效缓存 gt 只需重新启动并重新启动android studio 还尝试更改我支持的所有 api 的渲染版本
  • 使用 RTMP Stream Publisher 发布视频时如何在 iPhone 上存储视频?

    现在我正在使用RTMPStreamPublisher在 wowzaserver 上发布视频 它已经成功上传到那里 但是谁能告诉我如何在上传到服务器的同时在 iPhone 上存储相同的视频 我在用https github com slavav
  • 如何在 Zurb Foundation 4 中使用断点?

    我想要3个断点 一般来说 我想为小型 中型和大型窗格配置网格 查看基础网格的文档 为 小 和 大 提供了示例类名 然而 我怀疑基金会可以更灵活 所以我查看了文件 foundation global scss 果然 它似乎具有适用于一系列窗格
  • 使用核心 SQLAlchemy 进行插入和更新

    我有一个数据库 但没有元数据或 orm 类 该数据库已存在 我设法通过以下方式使所选内容正常工作 from sqlalchemy sql expression import ColumnClause from sqlalchemy sql
  • 将小写字母转换为大写字母

    我是 Haskell 的新手 在定义一个将所有小写字母转换为大写字母并保持其余部分不变的函数时遇到一些问题 到目前为止 我尝试在书中解决这个问题 capitalise String gt String capitalise xs capit
  • 当 mixin 方法名冲突时,如何选择调用的方法?

    当您在方法名称冲突的类中包含模块时 它将使用该类定义的方法 有没有办法选择我想要运行的一个 module B def self hello hello B end end class A include B def self hello h
  • 在 ASP.net MVC6 网站上使用 Office Interop

    我想从我的 ASP net MVC 6 网站生成 Word 文档 我已经实现了多种在 POC 中生成文档的方法 DocX NetOffice OpenXml COM Interop 对象 我被它诱惑了 我制作了一个控制台应用程序来测试并且它
  • 如何将Firebase的身份验证链接到实时数据库?

    正如标题所说 我需要将经过身份验证的用户链接到数据库 这样不同的用户只能看到自己的数据 我已经成功实现了Firebase的身份验证功能 但记录不会保存到实时数据库 我不知道如何执行此操作 谁能教我如何实现这样的功能 我尝试了数据库 我大致知
  • 我可以在 Swift 中模拟特征/混合吗?

    Swift 是否有一种像 Scala 那样混合特征的方法 Swift 书中关于使用扩展向现有类添加协议的部分非常接近 但是 由于协议不能包含实现 因此不能用于将代码混合到类中 还有别的办法吗 模拟混合的一种方法是使用通用函数来提供实现 例如
  • ClassCastException:org.sonar.java.model.expression.MethodInitationTreeImpl 无法转换为 org.sonar.plugins.java.api.tree.IdentifierTree

    今天我们将SonarQube Java插件从3 2升级到3 3 http docs sonarqube org display PLUG Java Plugin http docs sonarqube org display PLUG Ja
  • 如何将 Micrometer 计时器与 webflux 端点一起使用

    是否有任何简单的方法可以将 Micrometer 计时器与 Webflux 控制器一起使用 看来 Timed 仅适用于非反应式方法 对于反应性来说 它记录的时间值非常低 我发现了一个类似的问题 如何使用 Micrometer Timer 记
  • 将两个 xml 片段合并为一个?

    如何合并xml内容 a and b into c declare a xml select 1 aaa for xml path AAAs declare b xml select 1 bb1 2 bb2 for xml path BBBs
  • 使用 HttpServer 或 HttpSelfHostServer 对 Web API 进行单元测试

    我正在尝试为 Web API 项目进行一些单元测试 我将模拟 Web API 托管环境 看来我可以使用内存主机 HttpServer 或自主机 HttpSelfHostServer 只是想知道有什么区别 哪种技术有什么好处 以及这些选项是否
  • Git-Svn dcommit 导致分支分裂

    我遇到了 git svn dcommits 问题 导致 git 存储库无法跟踪哪些提交 我尝试确保 git 中的 master 分支始终遵循 SVN 存储库中的 trunk 所以每当我工作时 我都会在一个主题分支上 这是我的场景 在主题分支