在 Git 中引用提交的子级

2023-12-28

如果您想移动HEAD到当前的父级HEAD, 这很容易:

git reset --hard HEAD^

但是有没有简单的方法可以执行与此操作完全相反的操作,即将头设置为当前头的第一个子提交?

现在,我使用 gitk 作为解决方法(alt-tab、向上箭头、alt-tab、中键单击),但我想要一个更优雅的解决方案,当 gitk 不可用时也可以使用该解决方案。


很可能不是最快的解决方案,但它满足了我的需要:

#!/bin/bash

REV=$1

if [[ -z "$REV" ]]; then
    echo "Usage: git-get-child <refspec> [<child-number>]"
    exit
fi

HASH=$(git rev-parse $REV)

NUM=$2

if [[ -z "$NUM" ]]; then
    NUM=1
fi

git rev-list --all --parents | grep " $HASH" | sed -n "${NUM}s/\([^ ]*\) .*$/\\1/p"

The git rev-list --all --parents正是我需要的:它迭代所有可到达的提交,并为每个提交打印以下行:

SHA1_commit SHA1_parent1 SHA1_parent2 etc.

grep 表达式中的空格可确保仅找到相关 SHA1 为父级的行。然后我们获取第 n 个子项的第 n 行并获取该子项的 SHA1。

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

在 Git 中引用提交的子级 的相关文章

  • 将 git dcommits 切换到 svn 分支

    I had master dcommit到 和rebase来自 颠覆trunk 我创建了一个中间 Subversion 分支tc 合并来自 2 个不同分支的更改 使用 git branch master git svn branch tc
  • GIT:向非当前分支添加本地更改

    我通常会遇到这样的情况 我做了一些本地更改 却发现我在错误的分支上进行了更改 因此我需要在提交之前切换分支 问题是当有本地更改时我无法切换分支 有办法做到这一点吗 显然 我可以复制更新的文件 切换分支 然后将它们复制回来 但这看起来并不聪明
  • git 查找胖提交

    是否可以获取有关每次提交中的更改浪费了多少空间的信息 以便我可以找到添加了大文件或大量文件的提交 这一切都是为了尝试减少 git repo 的大小 变基并可能过滤提交 你可以这样做 git ls tree r t l full name H
  • Git 日志历史记录

    对于版本控制来说 重要的一件事是知道谁做了什么更改 如果某些内容发生了变化 而我不知道为什么要进行更改 我会查看历史并询问进行更改的人 当我探索 git 时 让我对这个功能有点紧张的一件事是它似乎很容易伪造 是什么阻止我将同事姓名 电子邮件
  • GIT 中的 Fastlane 应用程序文件?如何检索当前的 apple_id?

    我为我的 XCode 项目设置了 Fastlane 来实现构建自动化 至少 Fastfile 包含构建选项 应该位于 GIT 中 但我也很高兴 Appfile 团队标识符 也位于 GIT 中 主要问题 Appfile 应该包含我的 appl
  • 在单独的终端屏幕上显示 git diff 和 git log 输出

    设置新的开发环境后 我遇到了一个奇怪的 git 行为 我不记得过去见过 我习惯于git diff and git log在终端中创建一个新屏幕并在其中显示其输出 什么less默认情况下 我用它作为我的寻呼机 然后我可以退出并返回到之前的终端
  • 使用 git filter-branch 然后 git push --force 清除大文件后,远程(Gitlab)上的 Git 存储库大小仍然很大

    我已按照 Gitlab 文档中有关 使用 Git 减少存储库大小 的说明进行操作 通过从历史记录中清除大文件 https docs gitlab com ee user project repository reducing the rep
  • git log 不按时间顺序排列

    我在一个公共项目 B2G 又名 FirefosOS 上意外发现 git log 输出不是按时间顺序排列的 git clone https git mozilla org releases gecko git git log graph fo
  • 无法从 Git 扩展向 GitHub 进行身份验证?

    我只是在 Visual Studio 2010 中设置 Git 扩展 但无法真正使其工作 我无法进行身份验证 在 Git Extensions 中 如果我选择 Plugins gt GitHub 我可以添加用户 密码 API 令牌并选择 S
  • Git Push 远程:致命:包超出允许的最大大小

    我接到了一个大项目 客户想将其添加到github 我是一点一点添加的 然后发生的事情是我太贪心了 一次添加了太多文件 现在 无论我尝试什么 我都会不断收到此错误 我怎样才能解决这个问题 我试图回滚 但也许我做错了 git push Ente
  • 使用 Git 处理 subversion:忽略对跟踪文件的修改

    我目前正在使用 subversion 存储库 但我正在使用 git 在我的计算机上本地工作 它使工作变得更加容易 但也使 subversion 存储库中发生的一些不良行为变得非常明显 这给我带来了问题 拉取代码后 有一个有点复杂的本地构建过
  • github Diff 截断错误

    在 github 中发出拉取请求并审查更改时 我们收到了 Diff Truncated 错误 如下所示 任何人都可以帮助解决这个问题 拉取请求可能会触发以下提到的限制之一GitHub 支持 https stackoverflow com a
  • Azure Devops Pipeline YAML 中的 Git 标记名称

    Summary 如何获取 Azure Devops Pipeline YAML 文件中当前 git 标签的名称 我想做什么 我正在 Azure Devops 中设置构建管道 创建新的 git 标签时会触发管道 然后我想构建 docker 镜
  • 从远程获取上个月在 git 分支上提交的文件列表

    我正在尝试获取上个月在 master 分支的 github 存储库上更改的所有文件的列表 我的本地克隆没有可以追溯到那么远的日志 因此当我运行以下命令时 git diff stat 1 month ago 我收到一条警告消息和一小部分更改
  • 如何设置“阅读文档”以使 Sphinx autodoc 选项发挥作用?

    我的项目不是使用 autodoc 构建的 我遇到了关于我的项目未在 autodoc 中构建的常见问题 https read the docs readthedocs org en latest faq html my project isn
  • 如何将更改提交到另一个预先存在的分支

    我刚刚对一个分支进行了更改 如何将更改提交到另一个分支 我正在尝试使用 git checkout the commmit to the changed branch b the other branch 但是 我认为这不是正确的做法 因为在
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • 名称和电子邮件在 Git 的每用户配置文件中设置,但 Git 仍使用默认生成的名称和电子邮件

    标题已经说了 但我会更彻底地解释一下 我已使用以下命令按照建议配置了用户名和电子邮件 git config global user name git config global user email 我可以通过执行以下操作来验证这是设置的g
  • GitHub - 指定时间的存储库状态

    我是使用 git 版本控制工具的初学者 我想在指定时间 例如 2013 年 10 月 5 日 下载存储库状态 文件 我怎样才能做到这一点 截至 2019 年 5 月 不确定何时引入 您可以简单地按以下格式添加日期 HEAD 2019 04
  • 如何将一个文件存储库上传到 Gist,并保留历史记录?

    我的计算机上有一个包含单个文件的 Git 存储库coins py 我如何才能将其作为 Github 上的要点来保存历史 这其实很简单 您可以将现有历史记录移动到 Gist 存储库中 就像将其移动到任何其他存储库中一样 创建要点 只需输入一些

随机推荐

  • UIWebView YouTube 嵌入视频未加载

    我在获取通过 UIWebView 嵌入到我正在制作的 iOS 应用程序中的视频时遇到一些问题 iframe 播放器加载完全正常 但是当我点击播放按钮时 白色旋转器出现一秒钟然后消失 只留下一个黑框如果我触摸黑框 我会得到标题和 i 按钮 但
  • 从数据库输出到文本区域

    我试图通过这样做将数据库字段值放入文本区域 但它不起作用
  • 尝试将创建的文本文件作为电子邮件附件发送 - 从默认文件夹

    我正在尝试一些简单的事情 例如创建一个文本文件 然后将其作为附件发送 虽然如果我使用 SD 卡它工作正常 但我不知道将它放在 标准数据文件夹 中的哪里 所以我的应用程序实际上适用于没有 SD 卡的每个人 并且该文件有点不可见 当这段代码有效
  • Dapper 抛出“DynamicMethod 的类型所有者无效”。

    所以我尝试使用 Dapper net 并且我很喜欢它 我不喜欢的是 当我尝试批量插入实体时 出现以下错误 DynamicMethod 的类型所有者无效 在 System Reflection Emit DynamicMethod Init
  • 在 JavaScript 中如何将语言代码转换为语言名称?

    我使用以下方式获取浏览器的语言代码 var lang window navigator language 这将返回代码 即 en US 如何将其转换为语言名称 即英语 Javascript 有一个 API 使用Intl使用选择的语言将语言转
  • 如何为传奇提供历史实例?

    我想在成功登录后重定向到新页面 路线 V4 的使用方式如下 import browserHistory from browser history signleton class App extends Component render co
  • 如何使用适用于 Mac 的 Oracle 新 1.7 JDK 运行 Eclipse?

    我正在尝试获取新的 1 7 JDK https blogs oracle com java entry five update java releases使用 Eclipse 这是 Oracle 的官方版本 我的意思并不是仅仅将 Eclip
  • 为没有 PowerBi 帐户且不允许共享回来的用户共享仪表板和报告的方法

    我想与没有 Microsoft PowerBI 帐户的用户共享一些 PowerBi 仪表板 我知道我可以在 Sharepoint 在线共享它 但此解决方案的问题是我们可以在网页按钮上找到共享按钮 Facebook Twitter URL 我
  • 打字稿中的通用对象类型

    在打字稿中 有什么方法可以为变量分配通用对象类型 这就是我所说的 通用对象类型 的含义 let myVariable GenericObject 1 Should throw an error abc Should throw an err
  • Git 和令人讨厌的“错误:无法锁定现有信息/引用致命”

    从远程 git 存储库克隆后 在 bettercodes 我做了一些改变 承诺 并试图推动 git push origin master 错误 错误 无法锁定现有信息 参考致命 git http push 失败 本案例涉及已经存在的存储库
  • Vue 事件处理程序的可组合函数

    我正在使用 Vue 2 0 ES6 Webpack 我有一个组件 我们称之为Parent 和几个孩子 我们称之为text input每个 每一个text input发出一个名为的事件change每一个都应该改变 Parent 内部的一个不同
  • Android Studio 错误“不支持的类文件主要版本 61”

    我将 Android Studio 项目从一台计算机移至另一台计算机 现在出现此错误 不支持的类文件主要版本 61 我怎样才能解决这个问题 在 的帮助下 罗伯特回答 https stackoverflow com a 70632872 10
  • angularjs app.run 不会被状态调用

    我根本看不出问题所在 这是我的代码 var app angular module application ui router ngResource user controllers user services app config func
  • 如何在 numba.jit 函数中测量时间?

    我想转换一个conventional loop into a numba jit内部运行并测量其进程的时间 我尝试使用time模块 但它似乎与 numba 不兼容 Code from numba import jit jitclass im
  • Ruby on Rails 错误。处理控制器方法为 png

    我已经在我的路线中给出了这个 get custom page name gt custom page load content 这是我的控制器方法 def load content page name params name split j
  • Ionic 构建时阻止 HTTPS --release android apk

    调试 apk 工作正常 这排除了通常的嫌疑 但是当我构建 签名 安装发布版本时 角度无法进行 https http API 调用 http 到同一端点 我允许调试 可以工作 科尔多瓦白名单已安装ionic plugin add cordov
  • 如何将离线 HTML5 Web 数据库与集中数据库同步

    我希望能够在 HTML5 iPad Web 应用程序中执行以下操作 将数据上传到在线数据库 如果我用 SQLite 之类的东西构建在线数据库 大小可能 将数据的子集或完整副本提取到离线网络数据库 超出3G网络覆盖范围 对下载的数据执行一系列
  • 超链接 HREF 不起作用

    我正在考虑一个新的网站想法 但是当我测试它时 A HREF 不起作用 它甚至没有显示手指 手指针 它是内容区域的文本 标题下的第一个白色块 但不是菜单 标题应该是帖子的链接 Wordpress 无效链接的屏幕截图 红色箭头 http new
  • 为什么此方法会导致代码分析错误 CA2000: Call Dispose()

    我正在使用 Microsoft Minimal Rules 代码分析集构建我的项目 它为我提供了关于此方法的 CA2000 private Timer InitializeTimer double intervalInSeconds Tim
  • 在 Git 中引用提交的子级

    如果您想移动HEAD到当前的父级HEAD 这很容易 git reset hard HEAD 但是有没有简单的方法可以执行与此操作完全相反的操作 即将头设置为当前头的第一个子提交 现在 我使用 gitk 作为解决方法 alt tab 向上箭头