git 交互式变基:停止而不提交

2024-05-06

(长话短说) 有办法进去吗git rebase -i停止编辑,没有提交 ID? (/TLDR)

更长的版本:

背景

With git rebase -i,我得到一个文本编辑器,我可以在其中定义命令列表,从pick COMMIT_ID在每一行上。

其中一个选项是将“pick COMMIT_ID”替换为“edit COMMIT_ID”,这意味着它将在提交后停止,以便我修改提交,或者进行一些手动操作。然后我可以继续git rebase --continue.

从选项列表中:

#  e, edit = use commit, but stop for amending

Question

我想知道是否有一个选项可以停止编辑,而不选择任何提交。

动机/用例

例如。如果我想压缩一系列提交,然后停止进行一些手动操作,我必须将编辑 + 压缩放在同一个提交 id 前面 - 这是不允许的。

相反,我会做这样的事情:

pick COMMIT_0 Change some colors
pick COMMIT_1 Make it faster
squash COMMIT_2 Fix a typo in previous commit
squash COMMIT_3 Fix another typo in previous commit
edit
pick COMMIT_4 Refactor some things
pick COMMIT_5 Introduce new options

这样的选项还允许在序列中的第一次提交之前停止。

(我想说它将允许在整个历史记录的初始提交之前进行编辑,但这不是真的 - 初始提交永远不是变基序列的一部分)

如果我这样做,git 会这样说:

警告:SHA-1 丢失或者不是以下行中的提交:

有趣的是,效果或多或少是我想要的,它停止了,我可以做事了。但我确信这不是预期的方法。


根据具体情况,您有一种、两种或三种选择。

第一个选项

Insert

exec false

或其缩写形式

x false

在你想停止的地方。你可能知道,exec在命令发生处运行 shell 命令;但如果命令失败退出,git rebase停止,并且命令false总是失败退出。

第二个选择

如果您使用的是 Git 2.20 或更高版本,您可以插入

break

或其缩写形式

b

在你想停止的地方。该命令的引入正是为了您所要求的目的。

第三种选择

在您想要停止的点之前标记提交edit代替pick。显然,如果您想在第一次提交之前或之后停止,这不起作用squash or fixup commit.

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

git 交互式变基:停止而不提交 的相关文章

  • 在 Windows 下克隆 git repo 时,出现“错误:无法创建文件 <文件>...(是目录)”

    Z gt git clone git github com kennethreitz httpbin git Cloning into httpbin remote Counting objects 1073 done remote Com
  • 使用 git 合并两个截然不同的分支?

    我有我的master分支和我的verydifferentbranch它们有相同的祖先 大约 300 次提交前 现在verydifferentbranch功能完整我想把它放在master下面branch 进行变基会导致每个补丁都有很多合并冲突
  • 推送更改到 Git 不起作用

    每次我想要提交命令 git push heroku master 时 系统都会要求我在 PowerShell 中输入凭据 当我输入 heroku 凭据 默认情况下连接到 git 时 我收到错误消息 但是 当我输入我的主目录中的 netrc
  • 无法在 Windows 10 上运行 Python 3.7“权限被拒绝”

    当尝试使用 Git Bash 在 Windows 10 上运行 Python 3 7 时 出现以下错误 python version bash c Users Name AppData Local Microsoft WindowsApps
  • 如何从暂存区删除单个文件(撤消 git add)?

    情况 我有一个 Git 存储库 其中文件已在索引中 我对几个文件进行了更改 打开 Git 并使用 git add 将这些文件添加到我的暂存区域 问题 如何从暂存区域中删除这些文件之一 但不将其从索引中删除或撤消对文件本身的更改 如果我正确理
  • 无法访问 Github 403 错误:权限被拒绝

    我是 Git Github 的新手 所以请原谅我的困惑 问题是 我刚刚对本地存储库进行了更改 并且想推送到 Github 上的原点 特别是 gh pages 之前 我一直在使用另一个 Github 帐户 因此我更改了 user name 和
  • 如何从现有存储库中的分支创建新的 GitHub 存储库?

    I have master and 新项目分支机构 现在我想创建一个全新的存储库及其基于新项目分支的主存储库 背景 我有一个存储库 其中包含三个独立的应用程序 事情并不是这样开始的 仓库中最初只有一个应用程序 然而 随着时间的推移 业务需求
  • 本地提交推送到中央服务器

    在工作中 我们使用 perforce 并被鼓励定期对其进行承诺 我对此很满意 然而 我想运行像 Mercurial 这样的东西 这样我就可以在本地提交正在进行的工作并且不一定编译 运行的东西 然后从中定期提交到中央 perforce 服务器
  • 如果不是最新的,则阻止 git Push 发送整个存储库

    相关问题 为什么 Git 每次推送 origin master 时都会发送整个存储库 https stackoverflow com questions 1381403 why does git send whole repository
  • Jenkins 多分支:更改 Groovy 的工作描述

    我在詹金斯的多分支项目工作正常 但我想修改job描述 默认情况下为 完整项目名称 xxxx 以更有意义 我可以使用以下命令轻松更改构建描述currentBuild当我的变量Jenkinfile已执行 但我不知道如何修改父作业描述 我的用例是
  • 如何仅对最新合并后的提交进行变基?

    考虑以下场景 我从master那里检查了一个分支 我做了一些承诺 我合并了更新的master 我做了更多的承诺 现在我想要从第 4 点开始变基提交 以便从第 2 点开始的提交不受影响 所以如果我最初有 1 2 x x x x x x x m
  • Xcode - 使用 SSH 身份验证添加存储库时出现身份验证失败错误

    我正在尝试通过 Xcode gt 设置 gt 帐户添加存储库 但我被困在正确的地址上 我们的存储库地址非常简单 my domain com port project name 通过 SSH 密钥进行身份验证 有人可以帮助我了解这里发生了什么
  • 如何使用 Groovy 获取自上次成功构建以来 Jenkins 的提交信息?

    如何编写自定义 groovy 脚本以轻松操作自上次成功构建以来所有提交的数据 在 gradle maven 步骤之后添加新的构建步骤 gt 执行系统 groovy 脚本 适配代码 import com tikal jenkins plugi
  • GIT:向非当前分支添加本地更改

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

    我正在尝试将更改从一个源代码控制系统 专有且复杂 导入到 git 存储库中 我目前正在通过运行一个脚本来执行此操作 该脚本只是按顺序同步到每个修订版并将其提交到 git 存储库 但由于各种原因 这已变得不可行 对于每个修订版 我都可以获得描
  • Git 存储库错误并显示消息,它不是存储库...但它是

    我有一个 git repo 去年我一直在同一个盒子上使用 今天我跑步git status并得到错误消息 fatal Not a git repository or any parent up to mount parent home Sto
  • GIT:无效路径“.editorconfig”

    从 master 克隆项目时出现以下错误 错误 无效路径 editorconfig 致命 无法签出工作树 警告 克隆成功 但结账失败 您可以使用 git status 检查签出的内容 并使用 git Restore source HEAD
  • Git 会删除空文件夹吗? [复制]

    这个问题在这里已经有答案了 我已提交一个项目并将其推送到我的 GitHub 帐户 该项目包含以下部分文件结构 server conf some files java lib java 和 lib 文件夹为空 从 GitHub 下载我的项目时
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • Azure Devops Pipeline YAML 中的 Git 标记名称

    Summary 如何获取 Azure Devops Pipeline YAML 文件中当前 git 标签的名称 我想做什么 我正在 Azure Devops 中设置构建管道 创建新的 git 标签时会触发管道 然后我想构建 docker 镜

随机推荐