Git 挑选那些包含关键字(跟踪 ID)的提交

2024-02-15

出于代码审查的目的,我想

  1. 樱桃选择特定提交
  2. 与他们一起创建一个新分支并
  3. 将该分支推送到远程

这样我就可以将分支 url 提供给同行进行审核。

我想创建一个 shell 脚本并发出简单的命令,例如

git-review <trackingID>

它给出的输出如下

Branch <currentgitusername>_<trackingID> created and pushed to remote.

我编写了一个执行上述步骤的脚本。

#!/bin/bash

if [ -z $1 ]; then
    echo "Rationale: Cherry pick all commits in master, matching the tracking ID and create a new branch.";
    echo "";
    echo "Usage:  $0 traackingID";
    echo "";
    exit 1;
fi

#If $1 doesn't match a AGW-<number> pattern, thrown an error
#Best of luck if you did not add add tracking ID in commits.

user="$(id -u -n)" > /dev/null

echo "You are - $user"

branchname=$user"_"$1"_review"

echo "Creating branch - $branchname"

git checkout -b $branchname > /dev/null

git log master --pretty=%H --grep="$1" | while read rev
do
  echo $rev
 # git cherry-pick $rev > /dev/null
done

#git push &> /dev/null

echo "Created branch, cherry picked, pushed to remote. Now switching back to master. Bye."

git checkout master

但卡在几个地方。

  1. 我想验证 TrackingID 格式。它应该是AGW-<somenumber>
  2. 看起来樱桃精选有合并问题。

    myname@mymachine ~/myproj
    $ ../git-review.sh AGW-1234
    You are - myname
    Creating branch - myname_AGW-1234_review
    Switched to a new branch 'myname_AGW-1234_review'
    2dfafa89e10062e7cfccb1d7a947ebb848c40cc6
    The previous cherry-pick is now empty, possibly due to conflict resolution.
    If you wish to commit it anyway, use:
    
        git commit --allow-empty
    
    Otherwise, please use 'git reset'
    1e295000bc3d80880518c9cac5e34ef3b28fc29e
    error: Your local changes to the following files would be overwritten by merge:
            rest-service/src/main/java/package/HealthCheckDAOImpl.java
    Please, commit your changes or stash them before you can merge.
    

我采摘樱桃的方式错了吗?另外,请提出任何更改建议,以使该脚本更加健壮。


正如@novelocrat 的评论中已经指出的那样,您以错误的顺序挑选樱桃。默认情况下,git log 会从最新的提交输出到第一次提交。为此,要么输入以下输出git log --oneline to tac,或使用--reverse flag:

git log --oneline | tac
git log --oneline --reverse

显然第二个选项是首选,因为这确保了逐行输出,而第一个(使用tac)需要一次性输入所有输入。


另外,由于您正在从 master 中创建一个新分支,因此当您这样做时git checkout -b $branchname.

当您这样做时,当前分支的所有历史记录都会从中选取。

所以你需要创建一个孤立的 git 分支,就像这里提到的 https://stackoverflow.com/a/4288660/1860929.

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

Git 挑选那些包含关键字(跟踪 ID)的提交 的相关文章

  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 执行 git Push 时出现“diff.renamelimit 变量”警告

    我将本地提交推送到远程 git 服务器并收到以下警告消息 remote warning only found copies from modified paths due to too many files remote warning y
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 为什么 git-svn 应该积极搜索旧历史?

    当我运行 git svn clone s 时发生了一些奇怪的事情 尽管以下信息告诉我们不要惊慌 但我想知道为什么会出现这种 svn 错误 为什么这个路径不存在 是被别人删除了吗 如果是 为什么 git svn 应该积极搜索旧历史记录 Ini
  • git-svn 如何知道要提交到哪个分支?

    我的存储库是 SVN 我使用 git 进行所有开发 我们有一个标准布局 我用以下命令初始化了我的本地存储库git svn init s
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • GitHub Pages (github.io) doxygen 生成的页面未找到 (404)

    我不明白为什么找不到 doxygen 生成的页面 404 它在Github存储库中的路径是https github com AubinMahe AubinMahe github io blob master doxygen html dd
  • 为别名命令添加“git help”?

    我已经实现了一个 Git 命令并使用 git 别名将其连接到 Git 但是有没有办法连接 Git 帮助 我在 Windows 上运行 如果我发出git help mycmd我收到一个弹出窗口 告诉我 Git 找不到 git mycmnd h
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • 如何让 git 显示作者日期指定日期范围内的提交?

    显然this https stackoverflow com a 11189286 281545 git log all after
  • 如何用awk删除以“C”开头的行?

    如何使用以下命令从文本文件中删除以 C 开头的行awk 有什么建议请 如果数据在文件中data txt then With awk awk C data txt With grep grep v C data txt 显示开头不带 C 的所
  • 如何恢复已删除的远程分支

    我们的远程主分支被删除 我有主存储库的本地副本 但它已经过时了 我可以通过将最后一个已知的提交哈希值插入 URL 来查看 github 中的分支 但未能成功恢复它 我尝试了几个步骤来恢复它 git reset hard 16deddc05c
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • Heroku 应用程序上的 Nodejs Express EACCES 0.0.0.0:80

    我正在尝试在他们的网站上新创建的 Heroku 应用程序上运行 Node 应用程序 我按照他们的步骤操作 但在显示应用程序状态时仍然遇到错误 我跟着Node js 入门 https devcenter heroku com articles
  • Smartgit:自动插入提交消息

    有没有办法使用钩子脚本在 Smartgit 中自动插入提交消息 重击 如果用户提交了他的更改 我想预加载提交消息字段 我没有看到任何SmartGit配置 http www syntevo com smartgit documentation
  • 每次重新运行终端时,我都必须输入 export PATH=~/anaconda/bin:"$PATH"

    我已经安装了 Anaconda for Mac 但出现了一些问题 当我输入命令时which conda or which ipython I get conda not found and ipython not find 然后我找到这个命
  • git 清除远程仓库

    如果我将错误的初始提交 或多个 推送到远程存储库 并且只想清除 销毁它 我可以通过命令来完成吗 将其从服务器中完全删除非常重要 这样它就不会占用磁盘空间 例如 今天我推送了一个完整的 Visual Studio 项目 其中包含 dll sd
  • 是否可以使用“git gc”来打包引用日志对象?

    正如答案所暗示的https stackoverflow com a 32025729 https stackoverflow com a 32025729我已经配置了远程裸仓库 git config gc pruneExpire never
  • 测试 bash shell 脚本[重复]

    这个问题在这里已经有答案了 有人可以解释一下如何测试 bash shell 脚本吗 例如 我有一个 sh 文件 其中包含此代码 bin sh for file in txt do mv file basename file txt doc
  • Git 实验分支还是单独的实验存储库?

    我正在开发一个 Android 应用程序 并且在整个开发周期中一直使用 Git 现在 我想构建并发布实验性功能 供人们尝试和安装 同时仍将原始的 稳定的应用程序安装在他们的设备上 现在 这意味着我需要使用不同的包名称 这会更改开发项目中的一

随机推荐

  • sqlite3_bind_text C++ 字符串的 SQLITE_STATIC 与 SQLITE_TRANSIENT

    我有一个返回 c std string 的方法 然后在将其传递到 sqlite3 bind text 之前将其转换为 c str 我的问题是 这应该使用 SQLITE STATIC 还是 SQLITE TRANSIENT sqlite3 b
  • 我可以根据查询在 SSIS for 循环中设置变量吗?

    我有一个在 SSIS 中执行的 SQL 查询 用于将数据加载到 CSV 文件中 如下所示 SELECT FROM SomeTable WHERE SomeDate BETWEEN 1 Jan 2016 AND 31 Dec 2016 AND
  • 在 GPU 上计算平方欧氏距离矩阵

    Let p是第一组位置的矩阵 其中每行给出特定点的坐标 同样 让q是第二组位置的矩阵 其中每行给出特定点的坐标 那么两两平方欧氏距离的公式为 k i j p i q j p i q j where p i 表示i矩阵第 行p and p 表
  • 如何命名 PowerPoint 幻灯片中的对象?

    所以我知道如何使用 VB 命名文本框或 PowerPoint 中的类似对象 但我想知道是否有一种方法可以通过功能区命名对象 PowerPoint 2007 例如 如果我在幻灯片上添加一个文本框 有没有办法为其指定一个名称 有点像 Acces
  • Java/Kotlin 注释处理器:获取注释字段/属性的类型

    例如我有一堂课 class Foo AnnotatedProp var foo Boolean null 我怎样才能得到类型foo我的自定义注释处理器中的属性 在伪中我期望类似的东西 annotatedElement getStringif
  • Julia 中的 1 元素数组到标量

    将行向量和列向量相乘 我期望结果是标量 但它是一个一维 单元素数组 julia gt 1 2 3 4 5 6 1 element Array Int64 1 32 问题1 这背后的理由是什么 问题 2 将此视为 Julia 的一个怪癖 我想
  • 在 Swift 中解析 CSV 文件

    应用程序启动时 我需要将数据预加载到我的 tableView 中 所以我通过解析 csv 文件来使用核心数据 我正在关注本教程 http www appcoda com core data preload sqlite database 以
  • 在 Angular 4 cli 项目中的何处添加 htaccess 文件以添加重写规则?

    我已经完成了角度项目 现在我想完全使用 htaccess 文件强制更改一些 url 格式 那么我应该将 htaccess 文件放在哪里 我已经尝试过像下面的路径这样的地方 opt lampp htdocs GreatColoradoHome
  • 如何获得每列的平均值,按某分组?

    我正在使用 R 我有一个数据集 group attribute1 attribute2 attribute3 A 1 2 3 A 2 3 4 B 2 4 2 B 2 2 1 如何编写输出函数 group attribute1 attribu
  • 过滤 dataTables.net,不包含过滤框输入

    我想使用DataTables的过滤功能 但不想使用他们的搜索框 在他们的文档中 http datatables net usage featuresbFilter 下显示 请注意 如果您希望在数据表中使用过滤 则必须保持 true 要删除默
  • ResultSet getString 字符编码为 un​​icode 字符

    在我的 swing 应用程序中 我将显示数据库中的印地语 unicode 字符 当我显示名称时 它按原样显示 而不是印地文字符串 但是当我将其硬编码到程序中时 它显示正确 问题是什么 从数据库获取数据时是否有任何字符编码选项 我正在使用 O
  • Titanium api.info 从不在控制台中显示任何内容

    我刚刚开始使用钛 但我无法制造Ti API info 我的日志消息 在控制台中打印任何内容 我尝试在我的 Android 设备 Android 模拟器 iPhone 模拟器中以及 GoogleChrome 中作为移动 Web 项目运行该应用
  • 为此我需要哪种音频播放技术?

    我在选择正确的音频播放技术时遇到了困难 iPhone 上使用了大量的技术 令人眼花缭乱 我需要做的是这样的 开始播放 0 1 到 2 秒之间的短声音 高品质播放 无爆裂声 我听说一些 iPhone 音频播放技术在开始或结束时会发出爆裂声 这
  • 替换标准 Android JSON 解析器以获得更好的性能?

    我知道 Android 有一个内置的 JSON 解析器 但我想知道是否值得使用提供更好性能的东西 比如 Jackson 请参阅http jackson codehaus org http jackson codehaus org 有人试过吗
  • 会议结束后如何获取 Twilio 会议参与者?

    根据 Twiliodocs https www twilio com docs api rest participant list get filters curl G https api twilio com 2010 04 01 Acc
  • Android 6.0.1 - 权限问题 = wifiManager.getScanResults() 返回 0

    PermissionsList add 不起作用 但 MainActivity this requestPermissions 工作正常 问题是它会带来一个对话框 询问用户是否允许位置权限 为什么添加权限不起作用 有没有办法避免对话框 请参
  • Jenkins - 将数组/列表传递给参数化远程构建

    我正在使用 Jenkins 通过以下方式远程运行 Ansible playbookPublish Over SSH命令 这个命令 curl k v X POST https jenkins myhost com job Ansible De
  • 将数据框的列名称作为每列图的标题

    我有一个包含 36 列和 3000 多行的数据框 我正在使用绘图函数for loop绘制每列的图表 我希望图表的标题显示为列名称 我怎样才能做到这一点 for i in c 1 36 plot DowData i type l main c
  • CSS 背景图像未显示高度自动

    我有一个带有背景图像的 div 我必须指定一个以 px 为单位的高度才能显示 但我希望它在宽度调整时以自动高度显示 我被困住了 当我有高度自动时 它根本不显示图像 slider shadow1 z index 9999 margin 0 a
  • Git 挑选那些包含关键字(跟踪 ID)的提交

    出于代码审查的目的 我想 樱桃选择特定提交 与他们一起创建一个新分支并 将该分支推送到远程 这样我就可以将分支 url 提供给同行进行审核 我想创建一个 shell 脚本并发出简单的命令 例如 git review