获取自分离父分支以来的提交日志,包括父分支的最新提交

2024-04-29

我正在尝试创建一个快速的 bash 函数,该函数返回--oneline自当前分支从其父分支分支以来的每次提交的日志,以及包括先前提交的行。这是我到目前为止所拥有的。

# stolen from another Stack Overflow question
__git__get_parent_branch() {
  echo $(git show-branch 2>/dev/null |
    sed "s/].*//" |
    grep "\*" |
    grep -v "$(git rev-parse --abbrev-ref HEAD)" |
    head -n1 |
    sed "s/^.*\[//" |
    sed "s/[\^\~].*$//")
}

lp() {
  if [[ $(git rev-parse --abbrev-ref HEAD) = master ]]; then
    echo Already on master branch.
    return 1
  fi

  local commits="$(git log --oneline $(git merge-base $(__git__get_parent_branch) HEAD)..HEAD)"
  [[ -z $commits ]] && 1>&2 echo No commits since $(__git__get_parent_branch). || echo -e "$commits"
}

这可以正确获取每个提交after父母的承诺。我原以为我可以附加^ or ~1 to the git merge-base result:

local commits="$(git log --oneline $(git merge-base $(__git__get_parent_branch) HEAD)^..HEAD)"

# or
local commits="$(git log --oneline $(git merge-base $(__git__get_parent_branch) HEAD)~1..HEAD)"

然而,如果分支 SHA 是合并的,这似乎不起作用。由于我的大部分分支机构都已关闭master,情况永远如此。它不显示合并 SHA,而是显示自该合并第一次提交以来的每个条目。如果合并包含两个提交,我会看到我想要看到的行,以及另外两个我不想要的行。

我认为这个问题的关键在于^ and ~1不做我想做的事。

(我还看到我的[[ -z $commits ]]如果我实现了这个目标就行不通,但这是我以后可以解决的问题。)

编辑:也许最简单的解决方案就是直接检索并附加该行。

local parent="$(__git__get_parent_branch)"
local commits="$(git log --oneline $(git merge-base $parent HEAD)..HEAD)
$(git log --oneline -1 $parent)"

你需要的是^@,即git 修订版 https://git-scm.com/docs/gitrevisions“提交的所有父级”的语法。

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

获取自分离父分支以来的提交日志,包括父分支的最新提交 的相关文章

  • git-svn 如何知道要提交到哪个分支?

    我的存储库是 SVN 我使用 git 进行所有开发 我们有一个标准布局 我用以下命令初始化了我的本地存储库git svn init s
  • 为别名命令添加“git help”?

    我已经实现了一个 Git 命令并使用 git 别名将其连接到 Git 但是有没有办法连接 Git 帮助 我在 Windows 上运行 如果我发出git help mycmd我收到一个弹出窗口 告诉我 Git 找不到 git mycmnd h
  • TortoiseGit - 更改默认合并消息

    系统描述 Windows 7的 git版本2 10 1 windows 1 乌龟Git 2 3 0 0 I want 合并提交消息在不同的情况下有所不同fully自动方式 no manual amend Summary 在windows上
  • 如何使用 git --word-diff 显示空格差异?

    为了说明问题 参见diff https github com nim lang Nim commit 47c7fd037ed28b7de3d120b003d059d30e18f128 diff split diff 8af935b2312d
  • GIT 和 Ruby:如何从 ruby​​ 脚本内部取消设置 GIT_DIR 变量?

    我编写了一个非常简单的 部署 脚本作为我的post update挂钩到我的裸 git 存储库中 变量如下 live domain mydomain com staging domain stage mydomain com git repo
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 为什么cherry-pick 告诉我所有行都已更改?

    Updated 考虑文件 abc 在提交 A 和 B 中都相同 begin 123 456 789 klm end 在A中 我们重构第一行123 gt AAA并在结果之上选择 B Git 告诉我们all lines in the file
  • 结帐时出现 Git 错误:“致命:引用不是树”

    当我决定弄清楚为什么我正在从事的项目如此重要时 这一切就开始了 我运行了以下脚本 git rev list objects all git cat file batch check objecttype objectname objects
  • git am 和 git apply 有什么区别?

    Both git am https git scm com docs git am and git apply https git scm com docs git apply可用于应用补丁 看起来git am自动提交 而git apply
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe
  • 在 python 中找不到 git 可执行文件

    我试图使用访问密钥克隆 git 存储库 但是当我尝试运行它时 它抛出一个异常 说找不到 git 可执行文件 但我已经安装了 git 并且 in it py 显示了正确的路径 C Program Files Git bin 我还安装了 git
  • git merge --squash 和 gitcherry-pick 有什么区别?

    如果我在标准的主功能工作流程中工作 那么将功能分支压缩到主功能分支和将其挑选到主功能分支之间有什么区别 分支示例 m1 m2 master f1 f2 feature 我认为两者都有相同的输出 即 m1 m2 m3 master f1 f2
  • git 清除远程仓库

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

    我都尝试过 git update index assume unchanged config myconfig and editing git info exclude并添加config myconfig 然而 当我执行 git pull
  • 致命:refspec 的远程部分不是 :capability^{} 中的有效名称

    从 github 克隆给定的存储库 然后推送到 bitbucket 上的新存储库 我收到错误 gt fatal remote part of refspec is not a valid name in capabilities gt fa
  • 将 GIT 存储库中的文件标记为暂时忽略

    我们正在从 Perforce 迁移到 GIT 当然 我希望存储库中有一些文件 但个人开发人员不应该定期签入它们 诸如 eclipse 项目文件之类的东西 每个开发人员可能会获得初始的 project 文件 但随后会根据自己的环境稍微调整它
  • “git merge”和“git rebase”有什么区别?

    有什么区别git merge and git rebase 假设最初有 3 次提交 A B C 然后开发人员 Dan 创建了提交D 开发者 Ed 创建了提交E 显然 这一冲突应该以某种方式得到解决 为此 有两种方法 MERGE 两者都提交D
  • 从 `git commit` 调用时 Vim 使用非标准配置?

    我注意到每当我编写提交消息时 git 似乎都会使用不同的 vim 设置 我有git svn安装 Macports 我已经检查过 MYVIMRC变量 它被设置为正确的文件 尽管如此 每次我提交消息时 我都会受到每行 80 个字符的限制 区分大
  • 使用 C# 解码 Git 索引文件

    有没有关于Git索引文件内部结构的文档 从各种书籍中我知道它是二进制的并且包含暂存文件的 SHA 我知道 Git plumbing 命令有助于揭示索引内容 但是 例如 我自己使用 C 读取索引怎么样 我知道这个功能有几种实现方式 所以可以研
  • 如何在 Gitolite 配置中添加存储库的描述

    我正在使用 gitolite 为我的 GIT 服务器进行用户维护 除了仓库描述之外 一切正常 我已经在 gitolite conf 中设置了存储库的描述 例如 reponame repo description 早期版本 v3 x 之前 可

随机推荐

  • Elasticsearch TransportClient NetworkPlugin NoClassDefFoundError

    我期待将 Elasticsearch 集成到 Spring Boot Web 应用程序中 这是创建传输客户端的配置 Configuration public class ElasticsearchConfig private Transpo
  • Angular2 登录后刷新标题

    因此 我有一个标头组件 根据用户是否登录来显示用户名或 登录 我还有一个登录组件 它执行登录的所有业务逻辑 它们目前没有父 子关系 当用户登录时 除非在浏览器中完成整页刷新 否则标题不会刷新或更改 我在网上进行了大量搜索和阅读 了解实现此目
  • numpy 数组的列表理解 - 不好的做法?

    我想知道以下方法是否会被视为不好的做法 如果是的话 是否有人可以为另一种方法提供一些指导 这是有问题的代码 a np array 1 2 3 4 5 6 b np array 5 5 c np array np multiply a x b
  • JavaScript 验证国际字符的问题

    我们用优秀的jQuery 验证器插件 http bassistance de jquery plugins jquery plugin validation 在 Stack Overflow 上 在将输入提交到服务器之前对输入进行客户端验证
  • R 中的 DataTable,将具有特定值类别的行格式化为百分比

    如果我有一个数据表 并且我的目标是将包含 MONTH Percent Change 的任何行更改为百分比 MONTH YEAR Client Revenue Metric 1 Metric 2 Metric 3 1 MTD 1 2015 C
  • 如何使用python检查youtube中的视频是否已被删除或删除

    我有一个 csv 文件 其中有 1000 个视频链接 我想检查这些视频是否仍然存在或者已从 YouTube 中删除或删除 我怎样才能在Python中做到这一点 请指导一下这个 你可以使用官方 YouTube API https develo
  • 如何在 Spring Kafka 中以编程方式设置 Jsonserializer Type Value 方法

    所以我无法仅使用 yaml 为 JsonSerializer 配置 JavaType 方法 还不确定原因 但与此同时 我如何以编程方式设置它 我在文档中看到了它的代码 但是该代码到底需要在哪里运行 Spring Kafka JsonDese
  • 正方形检测找不到正方形

    我正在使用该程序方块 c在 OpenCV 库的示例中可用 它适用于每个图像 但我真的不明白为什么它不能识别该图像中绘制的正方形 After CANNY After DILATE The RESULT图像 红色 http img267 ima
  • 通过 javascript 按名称引用 HTML 元素(其中带有方括号)

    大家好 我正在尝试根据是否选中复选框或是否从下拉框中选择特定值来隐藏 显示不同的 html 元素 div 等 我想知道是否有人可以帮助我 html 元素是按照此 如下 的方式定义的 我不确定如何通过带有括号的名称来引用它 我正在使用的页面启
  • 使用 jQuery 动态创建并“单击”链接

    我想动态创建一个 a href 元素 然后 单击 它 全部无需修改页面 我正在尝试这个 a href nbsp a click 无济于事 它不是jquery 但它工作得很好 var link document createElement a
  • 概念面无法映射到物体面?

    我使用实体框架和 Db First 方法 我曾经有一个名为 Ranking 的表 我将其映射到带有一些继承的具体类的抽象基类 现在 我最近删除了所有继承 并选择只使用一个名为 Ranking 的具体类 但自从我把它改回来后 我得到以下运行时
  • PyCharm 找不到已安装的软件包:keras

    我在运行 Ubuntu 14 04 的 PC 上安装了 pycharm 2016 1 4 我已经使用安装了 Keras 一个 Python 包 pip install keras和 PyCharmcan找到它before 但它cannot找
  • redis 阻塞直到 key 存在

    我是 Redis 新手 想知道是否有办法能够await get通过它的键来获取值 直到该键存在 最小代码 async def handler data await self fetch key async def fetch key ret
  • 将预训练模型从 tfhub 转换为 tflite

    我正在尝试转换openimages v4 ssd mobilenet v2 https tfhub dev google openimages v4 ssd mobilenet v2 1到 tflite 使用 pip3 install te
  • JavaScript 中的 function($) 是什么意思?

    我意识到 只是命名指向 jQuery 对象的变量的约定 也是 document getElementById 的函数 但是 function 意味着什么吗 编辑 我其实是想说 function jQuery 抱歉造成混乱 但感谢您的回答 一
  • dmesg 和 /var/log/kern.log 之间的区别

    我正在修改kvm模块 并在内核代码中添加了printk语句 运行虚拟机后 printk为我提供了错误地址和有关客户操作系统的其他信息 我需要根据此信息生成统计信息 当我使用 dmesg 时 我只能看到错误地址 在内核空间中 即它们的地址高于
  • 警告:implode() [function.implode]:传递的参数无效

    我收到以下错误 警告 implode function implode 在第 1335 行的 wp content themes mytheme functions php 中传递的参数无效 at function my get tags
  • 如何平滑过渡 CSS 背景图片?

    主要的解决方案是 只需抛出一个加载屏幕 直到页面加载完毕 但我的目标是构建能够快速呈现基础知识的页面 无需加载屏幕 然后在图像和精美功能准备就绪时进行转换 所以我会等到它加载完毕 然后淡入 或者我会加载一个非常低分辨率的版本 然后在准备好时
  • PyCharm 未使用环境变量进行更新

    当我使用vim更新我的环境变量 在 bashrc PyCharm 不会立即获取更新 我必须关闭程序 源 bashrc再次 然后重新打开 PyCharm 有没有办法让 PyC harm 自动获取更改 或无需关闭 当任何进程创建时 它都会从其父
  • 获取自分离父分支以来的提交日志,包括父分支的最新提交

    我正在尝试创建一个快速的 bash 函数 该函数返回 oneline自当前分支从其父分支分支以来的每次提交的日志 以及包括先前提交的行 这是我到目前为止所拥有的 stolen from another Stack Overflow ques