在大型 PR 堆栈中深度重命名变量

2024-04-07

我有一个包含 100 次提交的 PR,它将作为许多较小的 PR 提交。

在 PR 堆栈的底部,我选择了一个现在觉得很奇怪的变量名称,并且希望在每次提交期间更改它,但不想在各处繁琐地解决合并冲突。

有没有办法自动执行此操作,使用一些 cli 命令来搜索+替换变量名称?


这是一个巨大、丑陋但神奇的命令:

警告:如果您的文件名中包含空格,这绝对会破坏您的历史记录。

git fetch && git rebase --empty=drop --exec "ag -0 -l 'YourOldUndesirableString' | xargs -0 sed -ri.bak -e 's/YourOldUndesirableString/YourShinyNewString/g'; git clean -f '**/*.bak'; git add .; yarn prettier --write \$(git diff HEAD^..HEAD --name-only) && git add . && git commit --amend --no-verify --no-edit" --strategy recursive --strategy-option theirs origin/master

  • The ag命令是the_silver_searcher, brew install the_silver_searcher
  • 该命令通常适用于 osx。
  • Replace YourOldUndesirableString and YourShinyNewString用你的实际字符串
  • 一定要更换<your-base-sha>与类似的东西1a2s3d4f
  • 注意这个命令的 90% 是在 rebase 中--exec "string",也许有一种方法可以避免将巨大的字符串传递给 git rebase--exec,允许更好地格式化此代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在大型 PR 堆栈中深度重命名变量 的相关文章

  • git - 精心挑选的功能提交到新分支,恢复提交,变基未按预期工作

    我最近不得不从我们的 开发 分支中删除一个功能 因为它被搁置到稍后的日期 为此 我创建了一个分支 其父级位于第一个功能提交之前的 dev 上 第一个功能提交是来自另一个分支的压缩合并 然后 我将所有功能提交从 dev 挑选到新分支 最后 我
  • 如何选择 git rebase 的合并策略?

    git rebase手册页提到 X
  • 当更漂亮的格式应用于整个项目时如何变基

    有人将整个代码库中更漂亮的格式更改合并到我们的master main develop branch 我现在正在尝试重新调整最新的master main develop分支 并解决合并冲突 由于冲突只是由运行 prettier 格式化代码引起
  • git 变基基础知识

    我已经开始使用git rebase最近 我不能 100 确定我做得对 为了问题起见 起源有两个分支 master and next 它是从master 自从两者上次同步以来 master有 2 次提交并且next 6 git log one
  • git:有类似每个分支标签的东西吗?

    我有一些历史重写要做 为此我想暂时保持我原来的树完好无损 然而 重写的树也应该复制以前使用的标签 有没有比例如更少的手动选项在标签名称前面添加分支名称 不 git 中没有像每个分支标签那样的东西 所有分支和标签都只是 Git 中的引用 re
  • 为什么 git rebase 的合并冲突通常比合并少?

    我经常听到有人说 与 git merge 相比 使用 git rebase 可以减少合并冲突的数量 但我从未找到解释为什么会出现这种情况 当两个人都修改同一行代码时 简单地在另一组更改之上重放一组更改并不能神奇地消除固有冲突 那么是什么让
  • 分离分支的 git rebase 与 gitcherry-pick

    我有两个分支 master tmp tmp分支已分离我需要把tmp上面的分支master优先解决冲突tmp 当我做 git checkout tmp git rebase strategy recursive X theirs master
  • 按日期重新排序 git 提交历史记录

    我已将 3 个不同的 git 存储库合并为一个 现在我的历史看起来像这样 A1 A2 A3 B1 B2 B3 C1 C2 C3 现在我想按日期重新排序所有这些提交 所以最后可能是这样的 C1 A1 A2 B1 C2 你明白了 如果我丢失了所
  • Git rebase 失败,“您对以下文件的本地更改将被合并覆盖”。没有本地改变吗?

    这是我尝试将 bugfix 分支合并到 master 分支以准备将其推向上游的记录 自从创建 bugfix 分支以来 已经有一些上游更改被拉入 master 并且现在拒绝 rebase 它引发错误的文件在打开时没有差异 没有添加 删除或重命
  • 无法通过 rebase 拉取

    我收到这条消息 Cannot pull with rebase You have unstaged changes Please commit or stash them 是的 我有一些未提交的更改 我搜索了一种方法 在从拉取中获得的新代码
  • 将整个开发分支重新建立到新的主分支上

    我正在使用一个存储库 理论上该存储库应该遵循 Gitflow 工作流程 请参阅成功的 git 分支模型 http nvie com posts a successful git branching model 作者 文森特 德里森 但是 存
  • 如何从 C:\cygdrive\c\ 更改 git 路径

    如何将 git 路径从 C cygdrive c 更改为 C 或只是 cygdrive c 我已将 notepad 设置为 git 的编辑器 当我尝试执行交互式变基 git rebase i 时 记事本打开 但由于这个奇怪的路径 包括 C
  • 为什么“git bisect”分支不知道?

    我正在尝试找到自过去一天在一个长期存在的分支 将在很久以后发布 上提交以来出现的错误的来源 该分支称为特征 x 但有一个错误 我发现我的脚本中没有预期的行为 到目前为止 这些行为可能已在任何提交中引入 特别是因为 master 的功能在 f
  • Git:从一个分支的给定文件中删除所有更改的最佳方法

    我有一个有点混乱的分支 有 20 个左右的提交 我正在准备合并回 master 我已经将其重新设置为脱离 master 仔细观察 我意识到有些文件正在以与该分支完全无关的方式进行修改 并且尚未准备好提交 对这些文件的更改并不局限于特定的提交
  • 按照之前解决冲突的方式解决 git rebase 冲突

    我决定从其他旧版本控制系统追溯提交 Git 中从未有过的历史记录 因此 我创建了一个孤立分支 newroot 并将来自其他版本控制系统的提交导入到其中 以下问题在 Git 中的根提交之前插入一个提交 https stackoverflow
  • 统一更新:使用本地文件的更新更新私有存储库(重构、重命名、更新)并从原始存储库获取定期更新

    我刚刚开始学习 Windows 上的 GitHub CLI 工具 认为我是新手 我有一个如下所示的用例 在深入探讨之前 让我先总结一下 我的用例是 克隆一个开源项目 它更新 定期 即创建它的本地副本并进行修改 包括 重命名文件和文件夹 将更
  • 使用 git rebase 定期将分支同步到 master

    我有一个 Git 存储库 其中的分支几乎从不更改 没有其他人对其做出贡献 它基本上是主分支 删除了一些代码和文件 有了这个分支 我可以轻松打包项目的精简版本 而不必每次都手动删除代码和文件 我一直在使用git rebase以使该分支与主分支
  • Git rebase 分支与所有父分支(或依赖子分支)

    是否可以使用 Git 来对分支及其所有父分支进行变基 我认为 父分支 是在这里使用的正确形式 根据您的观点 您也可以将它们称为依赖子分支 但是 遵循提交的父指针将让您到达这些分支 所以恕我直言称它们为 父分支 是公平的 我经常使用分支作为快
  • git:更改旧的提交消息而不产生冲突

    我想使用以下命令更改一个相当旧的提交消息 git rebase i sha1 of commit 这很好 我愿意git commit amend并编辑消息 但是当我这样做时事情会变得很糟糕 git rebase continue 我遇到了多
  • 您的分支比“origin/master”领先 3 个提交

    我在运行时收到以下信息git status Your branch is ahead of origin master by 3 commits 我读过其他一些帖子 解决这个问题的方法是运行git pull rebase但是 rebase

随机推荐

  • Boost Python 没有 to_python for std::unique_ptr

    我有一个无法解决的 boost python 问题 我试图公开一个包含返回函数的类std unique ptr 签名看起来像 std unique ptr
  • 在 pygame 物理模拟中添加 wxPython GUI 元素

    我做了一个pygame物理模拟 抛射运动 但它缺乏交互性 比如接受发射角度 速度等 我想添加带有增加 减少箭头的输入框 但不知道如何去做 谢谢您的帮助 也许你可以尝试PGU http www pygame org project 108 菲
  • Java 无法通过 JDBC-ODBC 从 Access 检索 Unicode(立陶宛语)字母

    我有数据库 其中一些名称是用立陶宛字母写的 但是当我尝试使用 java 获取它们时 它会忽略立陶宛字母 DbConnection zadanie connect createStatement ResultSet TYPE SCROLL I
  • 如何定义和使用 Common Lisp 包(库)?

    我在几个 Lisp 源文件中开发了一些 Common Lisp 函数 我希望这些函数可以轻松地供我编写的其他函数使用 或者如果我认为它们对其他人有用的话 可以在 github 上提供 现在 我只是将它们放在一些预定义的文件夹中并使用 req
  • Excel:将两列合并为具有交替值的一列

    如何将两列数据合并为一列 如下所示 Col1 Col2 Col3 A 1 A B 2 1 C 3 B 2 C 3 您可以在列中使用以下公式D按照我的例子 请记住增加 A 1 B 6根据您的数据范围 INDEX A 1 B 6 INT ROW
  • const 值会按实例存储吗?

    对于这样的类型 public class BlurEffect public const string Name Blur public int Amount get set 我有几个成员 比如 Name 所有成员都相同 我应该将其设为静态
  • UIButton 状态的键值观察

    UIButton 有一个状态属性 所有帐户似乎都符合 KVO 并且没有文档表明其他情况 但是 当我将观察者添加到 UIButton 的状态属性时 观察者回调从未被调用 怎么会 如果你查看 UIControl 的文档 state 属性被标记为
  • CSS 无法在生产中加载 - 开发中一切正常(Rails 4.1、Capistrano 3;bootstrap),更新:nginx 配置问题

    问题如下 在开发中一切正常 但是当我将 Rails 应用程序部署到生产环境时 该网站以纯 html 格式运行 但 CSS 引导程序 未加载 JS 可能也未加载 抱歉 我花了 2 天时间寻找了大约 15 种可能的解决方案 但无法使其发挥作用
  • 在 Visual Studio 外部启动时程序运行速度较慢

    我注意到我的程序有一些奇怪的行为 我使用 Visual Studio Professional 2013 Update 1 用 C 编写它 它由一个 exe 应用程序组成 该应用程序链接多个 DLL 并调用这些 DLL 中定义的函数 在我的
  • 如何在 MySQL 中造成死锁以进行测试

    我想让我的 Python 库与 MySQLdb 一起使用 能够检测死锁并重试 我相信我已经编写了一个很好的解决方案 现在我想测试它 对于我可以使用 MySQLdb 运行来创建死锁条件的最简单查询 有什么想法吗 系统信息 MySQL 5 0
  • Ruby 中“触发器已弃用”警告的解决方法

    我从 shell 脚本中调用 Ruby 如下所示 ruby n e print if r fromre r tore 从 Ruby 2 6 开始 我收到警告 警告 触发器已被弃用 所以看来我必须做好准备 明智的 Ruby 大祭司已经决定这个
  • 跳过第一个元素之后的所有其他元素[重复]

    这个问题在这里已经有答案了 我知道如何在 Java 中做到这一点 但我正在学习 Python 不知道如何做到这一点 我需要实现一个函数 该函数返回一个列表 其中包含列表中的所有其他元素 从第一个元素开始 到目前为止 我不确定如何从这里开始
  • 为什么 C++ 中的字符数组接受非 ASCII 字符?

    所以 我希望能够在我的 C 程序中使用中文字符 并且我需要使用某种类型来保存超出 ASCII 范围的此类字符 但是 我尝试运行以下代码 并且它有效 include
  • Perl:查找数组的特定元素是否是单词或句子

    我有一个包含文本文件的数组 那么如何使用 perl 查找仅包含一个单词的数组元素 假设文件内容存储在 lines my words grep S lines Note 别忘了chomp lines 在进行任何进一步处理之前
  • CSS强制浏览器显示滚动条

    我编写了一个 Web 应用程序 发现当我调整页面大小时 浏览器不会随着窗口缩小而显示它自己的滚动条 这会阻止用户访问内容 我已将正文宽度设置为 500px 并将导航栏设置为white space nowrap 如何让浏览器识别出屏幕右侧有内
  • Android 中片段中按钮的按钮侦听器

    我是 Android 新手 正在尝试自学 但我在 Fragments 方面遇到了困难 我正在创建一个简单的应用程序来学习片段 我认为这可能看起来很愚蠢 但我真的无法让它发挥作用 我想做的就是单击 Fragment One 中的按钮 butt
  • 如何从 &Vec 或 Vec<&T> 创建 &T 的迭代器?

    我有一个有两个变体的枚举 它要么包含对Vec of Strings 或者它包含一个Vec的参考文献Strings enum Foo lt a gt Owned a Vec
  • 在 Android 上用 Java 获取 SQLite SUM

    我是 SQLite 和 Java 的新手 我正在尝试即时学习 我有一列包含一些数值 我想获取它的总和并将其显示在文本视图中 我当前的代码是这样的 public Cursor getTotal return sqliteDatabase2 r
  • 如何根据 DataAnnotation 中的另一个属性验证一个属性

    考虑我有这两个属性 public class Test Required ErrorMessage Please Enetr Age public System Int32 Age get set Required ErrorMessage
  • 在大型 PR 堆栈中深度重命名变量

    我有一个包含 100 次提交的 PR 它将作为许多较小的 PR 提交 在 PR 堆栈的底部 我选择了一个现在觉得很奇怪的变量名称 并且希望在每次提交期间更改它 但不想在各处繁琐地解决合并冲突 有没有办法自动执行此操作 使用一些 cli 命令