如何在“git stash list”中列出存储的父提交

2023-12-20

当我生成一个藏匿处时git,有一个“父级”(我保存更改之前的最后一次提交)。

当我使用git stash为了存储我的更改,该父提交的 ID 会添加到描述我的存储的消息中。呼叫git stash list可以例如展示:

stash@{0}: WIP on master: c09a3fc second commit
stash@{1}: WIP on master: 063b893 first commit
stash@{2}: WIP on master: 063b893 first commit

但当我跑步时git stash save "My own message"未添加父提交的 ID (git stash list):

stash@{0}: On master: My own message
stash@{1}: WIP on master: c09a3fc second commit
stash@{2}: WIP on master: 063b893 first commit
stash@{3}: WIP on master: 063b893 first commit

有没有办法将父提交的 ID 显示到存储列表中?

我试过:git stash list --oneline --parents,这给了我:

1b5dfb1 4efd3e0 refs/stash@{0}: On master: My own message
4efd3e0 1e9b384 refs/stash@{1}: WIP on master: c09a3fc second commit
1e9b384 51eb834 refs/stash@{2}: WIP on master: 063b893 first commit
51eb834 refs/stash@{3}: WIP on master: 063b893 first commit

但这里显示了错误的 ID。我期望(第一行是父提交的 ID,在本例中对于两个提交的组是相同的):

c09a3fc 1b5dfb1 refs/stash@{0}: On master: My own message
c09a3fc 4efd3e0 refs/stash@{1}: WIP on master: c09a3fc second commit
063b893 1e9b384 refs/stash@{2}: WIP on master: 063b893 first commit
063b893 51eb834 refs/stash@{3}: WIP on master: 063b893 first commit

如果您希望 ID 包含在您提供的消息中,则可以将 ID 作为消息的一部分提供。也就是说,而不是:

$ git stash save "My own message"

你可能会运行:

$ git stash save "[$(git rev-parse --short HEAD)] My own message"

(您可以将其转换为别名 - shell 别名或调用 shell 的 git 别名)。

如果你想利用实际存储在树中的父ID,你必须深入研究实现git stash. See 这个答案 https://stackoverflow.com/a/20589663/1256452对于很多细节,但简而言之,工作树提交的第一个父级w (refs/stash,或 reflog 条目,指向此wcommit) 是之前的提交HEAD当时藏匿的。

The git stash list子命令只是将附加参数直接传递给git log, so --oneline --parents做它所做的事git log-除了那个git stash list是这样的吗:

git log --format="%gd: %gs" -g --first-parent -m "$@" $ref_stash --

(where "$@"是你的附加参数)。很遗憾,--parents使用历史简化和父重写(参见的文档git rev-list https://www.kernel.org/pub/software/scm/git/docs/git-rev-list.html),其中与-g,变成“用reflog walk的结果替换亲子关系”,这完全破坏了原始的亲子关系信息。

(顺便说一句,我能看到明确的唯一原因--first-parent这是为了使--parents隐藏索引和可选的额外提交。自从--parents无论如何都会被 reflog walk 击垮,这似乎毫无意义。不确定 git 人员是否希望 reflog walks 不会破坏父信息,如果它没有破坏,您就会看到您想要的内容。所以这可能是一个 git bug,尽管这里有很多猜测。)

你可以(某种程度上)通过返回到原始提交 ID(w提交)并使用git rev-parse找到每个的第一个父母w commit:

git log -g --format="%gd %H" refs/stash |
while read name hash; do
    printf "%s %s " $name $(git rev-parse --short $name^)
    git log -1 --format=%s $hash
done

(可能有一些方法可以缩短这个时间,尽管上面的内容非常简单)。

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

如何在“git stash list”中列出存储的父提交 的相关文章

  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 为什么“git描述-dirty”在描述干净结帐时添加“-dirty”后缀?

    我刚刚发现 dirty选项git describe看起来它应该做一些非常有用的事情 即在输出中附加一个后缀git describe当工作树脏时 但是在我的一些存储库上似乎并非如此 git status On branch 8 30 noth
  • 将 Visual Studio 在线 Git 存储库集成到 Android Studio 1.0.2

    我正在使用 Visual Studio Online 进行开发过程 我想将我的 Android Studio 1 0 2 代码集成到其中 但是 据我所知 Android Studio 没有 TFS 插件 这就是为什么我想使用 Git 进行源
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • Spring Cloud Config - 不允许使用 git-upload-pack

    我有一个在 docker 环境中运行的 spring boot 应用程序 它连接到 Git 存储库以获取应用程序的配置 我的问题是 当尝试获取 properties 文件时 应用程序有时会出错 这很奇怪 因为如果我更改用户和密码 同一个应用
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • Git 中的数据完整性?

    我现在已经多次听到提到 Git 提供数据完整性 但是 这是什么意思 据我所知 git 中的所有对象都是使用 SHA 1 校验和来访问的 并且该校验和是根据文件的内容计算的 这意味着如果文件发生更改 您将得到不同的校验和 但这如何提供数据完整
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • Android repo 脚本创建的 .repo/projects/ 中的裸 git 存储库的用途是什么?

    The 安卓源码 http android git kernel org 由以下人员管理repo http source android com source version control html 使用 repo 同步时 一个名为 re
  • Git 删除其他人从远程所做的最后提交

    所以 我的情况是 错误地 我已经授予某人对我的分支的承诺 现在 在我的本地 我已经进行了提交 当我尝试将其推送到远程时 它显示远程在前面 因为对方已经将他的代码推送到了这个分支并进行了多次提交 现在 我可以从远程删除这些提交而不将拉取到本地
  • 有什么方法可以从提交的消息中获取提交的 SHA 值吗?

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

    我有两个分行master and live Master是发展 分支并包含尚未准备好进入的提交live 如果在master需要进入的分支live树枝然后他们被樱桃采摘master to live 有时会做出承诺live分支然后是 樱桃摘入m
  • git 清除远程仓库

    如果我将错误的初始提交 或多个 推送到远程存储库 并且只想清除 销毁它 我可以通过命令来完成吗 将其从服务器中完全删除非常重要 这样它就不会占用磁盘空间 例如 今天我推送了一个完整的 Visual Studio 项目 其中包含 dll sd
  • Git - 使用多个遥控器来跟踪同一分支和服务器

    我正在尝试在我与其他人共享的远程服务器上设置 Git 存储库 唯一的问题是 它位于我的局域网中 而我并不总是属于其中 我希望能够有 2 个遥控器使用同一个分支 全部同步 几乎像符号链接 但带有配置 更困难的是 如果我尝试在 LAN 中使用外
  • 使用 git 将一系列小的合并从 master 压缩到我的分支中,同时保留对 master 的引用?

    我有一个非常复杂的合并要做 部分问题在于我浪费了太多时间 因此要纳入我的分支的更改量是巨大的 为了让事情变得更容易 我选择这样做git merge origin master 20 then git merge origin master
  • 在 Jenkins 项目中加载私有存储库子模块

    我目前正试图让詹金斯 克隆项目及其子模块 使用部署密钥配置为 Github 私有存储库验证 Jenkins CI https stackoverflow com questions 5212304 authenticate jenkins
  • 如何使用 Mercurial 进行原始结帐?

    如何将工作目录状态恢复到存储库的新克隆的状态 显然我可以克隆我的存储库 但这似乎有点野蛮 使用 git 我会这样做 git clean xdn dry run to see what I m about to destroy git cle
  • 如何调试 git Remote set-url 不起作用

    我无法更改 git 远程 urlgit to https 如下图所示 git remote set url不工作 git remote v 来源 git github com userName repoName git 获取 原点 git
  • 将 Maven 项目从 Git 导入到 Eclipse 中

    如何获得选择从 Maven 和 Git 导入并让 Eclipse 正确生成我的项目的效果 要将我的项目导入 Eclipse 我可以选择 File gt import gt maven 然后导入所有 Maven 项目并可以正常构建 或者我可以
  • 如何在解决冲突的过程中提交长 Git 合并

    我正在进行一次大型合并 其中包含 300 多个冲突文件 我想使用 mergetool 来解决这些问题 但我不可能一次性完成这一切 我如何提交合并 然后返回并继续相同的合并 通常 如果索引中存在冲突 git 似乎不允许您提交 我假设 不能一次

随机推荐

  • .insertOne 不是函数

    我想先说一下我已经阅读了这里有关此问题的几篇文章 我有一个节点 express mongo 应用程序 其中包含以下内容 app js var express require express var bodyParser require bo
  • 软件浮点和 x87 或 sse 已禁用

    我正在尝试按照 gcc 中的建议启用软件浮点这个问题 https stackoverflow com questions 1018638 using software floating point on x86 linux但我遇到了障碍 m
  • 错误 ContextCleaner:清理线程时出错

    我有一个包含 Spark 1 4 1 和 scala 2 11 的项目 当我使用 sbt run sbt 0 13 12 运行它时 它显示错误如下 16 12 22 15 36 43 ERROR ContextCleaner Error i
  • 我应该默认使用 Unicode 字符串吗?

    在 Python 中编码时 选择 Unicode 字符串而不是常规字符串是否被认为是一个好习惯 我主要在 Windows 平台上工作 目前大多数字符串类型都是 Unicode 即 NET String 在新的 C 项目中默认打开的 UNIC
  • 帮助反混淆这个 JS 攻击

    我有一段令人讨厌的 JavaScript 我想对其进行反混淆 我知道我可以启动虚拟机并看到恶意软件的所有辉煌 但我更感兴趣的是不让它运行 而是以非混淆的形式查看它 如果它需要运行才能做到这一点 那么就这样吧 我想 有人知道如何在不损害自己的
  • 在Python中从图像中提取任意矩形补丁

    有没有办法从图像中提取我选择的矩形 也许使用 numpy 数组 大多数可用的实现似乎都是针对常规滑动窗口解决方案 但它们总是包含步骤或相同纵横比的矩形或类似的东西 是否可以提供起始 x 和 y 坐标以及宽度和高度 或结束 x 和 y 坐标
  • Git 挂钩可在终端中生成 Github“创建拉取请求”链接,如 Bitbucket 一样

    我发现 Bitbucket 非常方便的一件事是 当您将新分支推送到 Bitbucket 中托管的存储库时 它会打印出 到终端屏幕 一个 URL 您可以点击该 URL 从刚刚推送的分支创建 PR 前任 git push origin some
  • 如何在 GNU Make 中以编程方式定义目标?

    我不知道有什么方法可以在 GNU Make 中以编程方式定义目标 这怎么可能 有时一个人可以走开用替代方法 https stackoverflow com questions 8937500 how to generate list of
  • Vue 警告 $listeners 和 $attrs 是只读的

    我收到很多 Vue 警告 说 listeners 是只读的 或者 attrs 是只读的 并且与不同的 Bootstrap 项目或 例如 Vue warn attrs is readonly found in gt
  • Rails:如何在会话中保存大数组? (ActionDispatch::Cookies::CookieOverflow)

    我正在尝试在会话中保存一个大于 4 KB 的数组 在这种情况下 会发生 ActionDispatch Cookies CookieOverflow 错误 有人知道如何在会话中保存更大的数组吗 将其保存到数据库不是我想要的 谢谢 马库斯 您需
  • 使用 GSON 库和 ProGuard 时 Android 崩溃

    我将以下 Proguard 配置与 GSON 库一起使用 Gson uses generic type information stored in a class file when working with fields Proguard
  • 如何安装 CocoaPods?

    我参考了很多链接并尝试过 但没有成功 我阅读了CocoaPods文档并多次尝试安装 但总是因为启动步骤而失败 我发现一个错误 无法先安装 gems 一步一步是怎样的 例如如何安装的步骤或演示 This https www raywender
  • 如何在没有秒的情况下将 TIMESTAMP 导入 POSTGRES?来自大型 CSV

    请原谅新手 POSTGRES 问题 我对 MSMSQL 更熟悉一些 但我可能也会在那里遇到困难 我有一个 CSV 文件 其中包含大约 1200 万行 我正在尝试导入 其中一个字段是日期字段 格式为 年 月 日 时 分 我的表的字段类型设置为
  • Databricks 在作业完成时触发作业写入/更新 _SUCCESS 文件两次

    我正在使用基于 S3 事件的触发器来触发 lambda 函数 每次在 S3 中的特定位置写入 SUCCESS 文件时 它都会触发 lambda 函数 数据正在使用 Databricks Spark 作业写入源位置 据观察 一旦作业将数据写入
  • C# - 从字典获取资源时锁定资源

    我有一个跟踪对象 ClientObject 的字典 字典和 ClientObject 都由多个线程访问 当我修改或读取此字典中的任何对象时 我使用 ReaderWriterLockSlim rwl clients 获取字典上的读或写锁 然后
  • re.fullmatch() 可以消除正则表达式中对字符串锚的需要吗

    考虑以下正则表达式 它检查密码强度 它具有开始和结束字符串锚点 以确保它与整个字符串匹配 pattern re compile r A Z a z d A Za z d 8 while True user pass input Enter
  • 如何在flutter中字符串化json

    在flutter dart 中 很容易反序列化Json并从中获取一个令牌 但是当我尝试再次序列化它时 键和值周围的引号消失了 String myJSON name first foo last bar age 31 city New Yor
  • 在 Dockerfile 中的单个 RUN 指令中指定多个 UNIX 命令的目的

    我注意到很多Dockerfiles尽量减少指令数量UNIX命令在一个RUN操作说明 那么有什么理由吗 另外 下面两个 Dockerfile 的结果有什么不同吗 Dockerfile1 FROM ubuntu MAINTAINER email
  • 是什么原因导致“<文件夹> 上的权限顺序不正确”?

    在调试涉及 SQLite 和 IIS 的一个特别麻烦的错误时 我们在访问App Data特性 App Data的权限顺序不正确 可能会导致部分条目无效 这也是一个屏幕截图 我认为我的问题不是错误的排序是什么如何以编程方式修复非规范 ACL
  • 如何在“git stash list”中列出存储的父提交

    当我生成一个藏匿处时git 有一个 父级 我保存更改之前的最后一次提交 当我使用git stash为了存储我的更改 该父提交的 ID 会添加到描述我的存储的消息中 呼叫git stash list可以例如展示 stash 0 WIP on