缺少 git 提交

2023-12-31

在工作中,这种情况经常发生,有人不小心将一些东西提交到 master 而不是预期的功能分支,然后这个人尝试解决它,结果却突然消失了。我进行了仔细的搜索,但找不到任何文档来解释为什么会发生这种情况,或者如何纠正这种情况。

以下是重现步骤:

$ git init
$ echo hello world > testfile
$ git add testfile
$ git commit -m 'init'
$ git branch A
$ echo abc >> testfile
$ git commit -am 'append abc'
$ git revert HEAD --no-edit
$ git checkout A
$ echo fff > secondfile
$ git add secondfile
$ git commit -m 'Add second file'
$ git cherry-pick master^

此时 git 历史记录如下所示:

$ git log --oneline --all --graph --decorate
* ac6f9b4 (HEAD -> A) append abc
* 54be952 Add second file
| * 9ba1f16 (master) Revert "append abc"
| * ef7c8d6 append abc
|/  
* 65a885d init

然后观察当我在 master 之上 rebase 分支 A 时会发生什么:

$ git rebase master
$ git log --oneline --all --graph --decorate
* 9d08739 (HEAD -> A) Add second file
* 9ba1f16 (master) Revert "append abc"
* ef7c8d6 append abc
* 65a885d init

A 开头的提交 ac6f9b4 发生了什么?它去哪儿了?为什么没有重新应用?

虽然这只是一个小例子,最后缺少一个提交,但有时我们最终会在长提交链的中间丢失多个提交,然后它们看起来几乎看不见:(


Rebase 不会重新应用已经在新基础中应用的提交——在这里,这是你的append abc改变。它已经在大师历史中了。这通常是正确的,以至于 git 不做任何评论就这样做了。可以说,在随后的恢复存在的情况下,这一点至少值得一提。

查看您正在变基的任何内容是否已经是新基础历史记录的一部分(master, here),

git log --oneline --cherry ...master

并寻找=- 标记的提交。这些是 master 中的提交,与您分支中的提交相匹配; rebase 不会重新应用它们。交换master... for ...master查看本地等效项。

如果你想要一个有效的盲变基,第一次切割是

git checkout -B A master
git cherry-pick ..A@{1}      # < added the very important `..` by edit

它只是将 A 移动到 master 上,然后挑选你刚刚留下的所有内容。要忽略合并(您可能应该这样做),请添加--no-merges对于cherry-pick,事实证明,当你向cherry-pick询问一个系列时,它只是将整个集合传递给git rev-list这样你就可以直接使用机器:

git cherry-pick --no-merges ..A@{1}  # just learned now that cherry-pick takes this
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

缺少 git 提交 的相关文章

  • SSH 到 Openshift 服务器失败

    我正在 openshift 服务器上使用 jboss catridge 我希望与其他人共享此实例并添加其他用户的公钥 id rsa pub 当其他人尝试访问该实例时 他会收到以下错误 我在他的实例中尝试了同样的方法 但看到了同样的错误 与
  • 如何使用交互式变基将提交编辑为未提交?

    我想使用交互式变基来编辑以前的提交 但是当我进入该提交的编辑模式时 所有文件都已提交 我知道我可以进行更改并修改提交 但我希望所有更改最初都未提交 暂存或以其他方式 这样我就可以对其进行编辑 就像在最初提交之前一样 这可能吗 Imagine
  • 如何将更改移出主分支

    基本问题 但这一直发生在我身上 进行更改working branch 切换到master git merge working branch git push cap deploy 到舞台 泡一杯新茶 然后我回来思考其他事情并开始做出一些改变
  • `git ls-files -s` 输出中不同字段的含义是什么?

    在 Git 中 命令返回的典型结果行git ls files s好像 100755 be2c2e9b0966253096472d4b482c458bc892e493 0 gitignore 这些字段是什么意思 不用再犹豫了git ls fi
  • git 显示已添加到 gitignore 的文件中的更改?

    我已经将 log2 文件夹和 main js 文件添加到 gitignore 如屏幕截图所示 但即使执行后git rm cached r我仍然可以看到 git 正在检测 main js 和 log2 文件夹内文件的更改 怎么会 这些的常见问
  • git 匹配多个单词的标签

    我们可以得到最后一个 git 标签 它以一个单词 例如 TEST 开头 如下所示 git describe tag dirty match TEST 我想知道如何获得最后一个以 word1 开头的标签orword2 例如测试OR跑步 我尝试
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • 致命:.git/info/refs 无效:这是一个 git 存储库吗?

    我有一个托管在 Assembla 上的 Git 存储库 我正在尝试执行以下操作 git push u origin master 我一遍又一遍地收到以下错误 fatal https url repo name git info refs n
  • .gitconfig 别名函数调用

    我在 gitconfig 中定义了以下别名 alias teamcity tc tc是我在我的中定义的一个shell函数 bashrc文件 由于某种原因 我收到以下错误 aafghani 03 git workday amirafghani
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • 如何克隆特定的 Git 标签

    From git clone 1 手册页 http git scm com docs git clone branch还可以在结果存储库中的该提交处获取标签并分离 HEAD 我试过 git clone branch
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 如何使用 Git 跟踪目录而不是文件?

    我最近开始使用 Git 但只有一件事遇到了麻烦 如何在不跟踪目录内容的情况下跟踪目录 例如 我正在开发的网站允许上传 我想跟踪上传目录 以便在分支等时创建它 但显然不是其中的文件 在开发分支中的测试文件或主控中的真实文件 在我的 gitig
  • Git 2.2.x 无缘无故更新旧包文件的时间戳

    Git 2 2 0 和 2 2 1 似乎修改了旧的时间戳 git objects pack pack pack偶尔会无缘无故地文件 它只是改变时间戳 内容是相同的 调试这一点很困难 因为它似乎很少进行更改 我在 2 2 0 之前的任何 Gi
  • git 排除与忽略

    I use Tower http www git tower com 用于在 Mac 中使用 Git Tower 中的设置具有创建 gitignore 的 忽略 部分 但它还有另一个名为 排除 的部分 似乎可以将排除与 git ls fil
  • 使当前提交成为 Git 存储库中唯一(初始)提交?

    我目前有一个本地 Git 存储库 我将其推送到 Github 存储库 本地存储库有约 10 次提交 Github 存储库是其同步副本 我想要做的是从本地 Git 存储库中删除所有版本历史记录 以便存储库的当前内容显示为唯一提交 因此存储库中
  • Eclipse Git 关键字扩展

    每次我检查 git hub 服务器的源代码时 我都需要更新源代码修订关键字 version date 等 你可能知道 Git 中的主要问题是你无法使用以下命令修改文件 提交后有关提交的信息 因为 Git 首先对文件进行校验 基本上我想要实现
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • git merge 冲突的不同场景

    我试图了解 git 合并后可能发生 git 冲突的情况以及如何避免它们 我创建了一个 git 存储库并向其中添加了一个文本文件 我已将 1 添加到文本文件中并将其提交给 master 我已经从 master 创建了一个新分支 分支 2 并将

随机推荐

  • 如何使用电子获取文件夹路径

    我对电子非常陌生 谁能建议我如何使用电子获取本地文件夹的相对路径 JavaScript 不具备这种能力 我有一个 选择文件 按钮 请参阅快照 所以我的问题是 当我选择一个文件夹并单击 打开 按钮时 它应该返回整个目录路径 正如 phuong
  • Python 多处理陷入 selenium 困境

    所以我有代码可以启动 4 个 selenium chrome 驱动程序并从网页上的元素中抓取数据 代码可以简化为这样 import json import multiprocessing as mp from selenium import
  • 实时向点云添加新点 - Open3D

    我正在使用 Open3D 在 Python 中可视化点云 本质上 我想做的是以编程方式向点云添加另一个点 然后实时渲染它 这是我到目前为止所拥有的 我找不到任何解决方案 在下面的代码中 我展示了一种可能的解决方案 但它并不有效 第一个窗口关
  • 使用 dgemm/dgemv 的矩阵向量积

    将 Lapack 与 C 结合使用让我有点头疼 我发现为 fortran 定义的函数有点奇怪 所以我尝试在 C 上创建一些函数 以便我更容易阅读正在发生的事情 不管怎样 我没有让矩阵向量乘积按我的意愿工作 这是该程序的一个小示例 小matl
  • 在 SwiftUI 中显示“UIActivityViewController”

    我想让用户能够共享位置 但我不知道如何显示UIActivityViewController在 SwiftUI 中 基本实现UIActivityViewController in SwiftUI is import UIKit import
  • 在mysql中像查询一样搜索带有撇号的记录

    我有类似这样的 mysql 查询 SELECT from users where username LIKE test s 并且有users带有字段名称的数据库表username 并且有 1 条记录users带有用户名的表test s现在我
  • 如果释放不干净的设备上下文会发生什么?

    通常 如果程序将一个对象选择到设备上下文中 或者更改其属性 则应该在释放设备上下文之前将它们更改回来 如果不这样做会发生什么 假设我这样做 HDC hdc GetDC some window SelectObject hdc some fo
  • Nokogiri 抓取带有格式和链接标签的文本,

    如何使用 Nokogiri 递归捕获带有格式标记的所有文本 div This is text in the TD with strong strong strong tags p This is a child node with b bo
  • 请解释一下 Option 的 orNull 方法的使用

    Scala 的 Option 类有一个orNull方法 其签名如下所示 orNull A1 gt A implicit ev lt lt Null A1 A1 我对隐含的东西感到困惑 有人可以解释一下如何使用它 最好是举个例子吗 scala
  • 在 Python 中使用多个代码文件和文件夹

    我是 Python 新手 还没有找到在多个代码文件和文件夹中分离代码的简单方法 我今天所做的是 为每个文件夹创建一个 init py文件 有时它是空的 我不知道为什么要这样做 但这似乎是必要的 这是与使用 C 的第一个区别 第二个区别是 对
  • facebook FB.Event.subscribe('auth.authResponseChange') 不起作用

    对于我的一生 我无法让 Event subscribe auth auth Response Change 工作 请参阅下面的代码 div div
  • 如何在C#中使用WCF REST服务?

    我的合同详细信息如下 我使用 Json 响应和请求格式 还使用 POST 方法 如何用 C 编写客户端来使用此服务 OperationContract WebInvoke UriTemplate RESTJson Sample1 Sampl
  • Firebase 身份验证 Javascript:用于重定向待处理凭据的 setCookie

    我正在尝试使用多重身份验证进行链接singinwithredirect 我抓住了错误 credential并使用JSON stringify通过 cookie 传递它 从那里 我使用以下方法将其转换回对象JSON parse 但是当我尝试将
  • 富文本 (YUI) 编辑器在 IE11 上损坏

    我正在运行 Internet Explorer 11 和 YUI 2 富文本编辑器似乎无法正常工作 有关更多详细信息 请参阅随附的屏幕截图 有什么想法如何在 IE11 下解决这个问题吗 由于IE改变了它的User Agent YUI 2 9
  • Android Studio 初始化“com.intellij.util.net.ssl.CertificateManager”时发生致命错误

    当我将Android Studio 3 0升级到3 1时出现这个问题 java lang RuntimeException com intellij ide plugins PluginManager StartupAbortedExcep
  • 使用 Python 检测 C 文件中的递归

    我需要检测相当大 5 15 000 的 C 不是 C 文件集中的直接和间接递归 文件已经过预处理 出于安全原因 该代码相当 老派 因此没有诸如函数指针之类的奇特东西 只有传递变量的函数和一些执行相同操作的函数宏 检测递归的最自然的方法是创建
  • 实体框架-“不允许新事务,因为会话中还有其他线程正在运行”

    我在尝试保存实体框架中的更改时收到以下错误 System Data SqlClient SqlException 不允许新事务 因为会话中还有其他线程正在运行 我已经看到了这个问题的各种答案 但我似乎无法让它们中的任何一个工作 基本上我在存
  • 增加 Azure Api 应用程序中的最大请求长度

    我创建了一个 Azure Api 应用程序 将用它来上传文件 这些文件将 gt 4mb 因此需要增加最大请求长度 我已将以下内容添加到 Web config
  • 取消 UNNotificationRequest

    Because UILocalNotification现已弃用 我将代码移至新版本UNNotificationRequest API 它指出 取消本地通知 在 iOS 10 0 中已弃用 使用 UserNotifications Frame
  • 缺少 git 提交

    在工作中 这种情况经常发生 有人不小心将一些东西提交到 master 而不是预期的功能分支 然后这个人尝试解决它 结果却突然消失了 我进行了仔细的搜索 但找不到任何文档来解释为什么会发生这种情况 或者如何纠正这种情况 以下是重现步骤 git
Powered by Hwhale