我如何将最后的N承诺集成到一个承诺中?
当前回答
Anomies 答案很好,但我对此感到不安全,所以我决定添加几张屏幕截图。
步骤 0: git log
查看你在哪里与 git log. 最重要的是,找到第一个 commit 的 commit hash 你不想 squash。
此分類上一篇
步骤一:转动
在我的案例中,执行 git rebase -i(你的哈希):
$ git rebase -i 2d23ea524936e612fae1ac63c95b705db44d937d
步骤2:选择 / 切割你想要的东西
在我的情况下,我想把所有的承诺,这是第一次在时间上。 订单是从第一到最后,所以正如在 git log。 在我的情况下,我想:
此分類上一篇
步骤 3: 调整消息(s)
如果您只选出一个承诺,并解除其余的承诺,您可以调整一个承诺消息:
此分類上一篇
一旦你保存这个(:wq),你已经完成了。
其他回答
有人提到在 IntelliJ IDEA UI 上做得多容易:
转到 git 窗口 手动选择所有要融入一个的承诺. 右键单击 > Squash 承诺 > 编辑失败的承诺消息 点击左侧的分支名称 > 右键单击 > Push > Force Push
此分類上一篇
您可以使用 git merge --squash 为此,这比 git rebase -i 略有优雅。
警告: 首先,请确保您完成工作 - 检查 git 状态是干净的(因为 git 重新设置 - 硬将抛弃错误和错误的变化)
然后:
# Reset the current branch to the commit just before the last 12:
git reset --hard HEAD~12
# HEAD@{1} is where the branch was just before the previous command.
# This command sets the state of the index to be as it would just
# after a merge from that commit:
git merge --squash HEAD@{1}
# Commit those squashed changes. The commit message will be helpfully
# prepopulated with the commit messages of all the squashed commits:
git commit
git merge 的文档详细描述了 --squash 选项。
更新:这个方法的唯一真正优点,比克里斯·约翰森(Chris Johnsen)在他的回答中提出的更简单的吉特重新设置 --soft HEAD~12 &&吉特承诺是,你会得到承诺的消息,以每一个承诺的消息,你正在破坏。
许多答案是基于Git Rebase命令,但在我的经验中,它对Git初学者来说有点复杂和先进。
假设你想排除最后3个命令,然后以下是步骤:
下载现行承诺ID: 使用 git log -1 --online 并记住当前状态的承诺ID(仅在您与 git reset 做错事的情况下) 返回 3 个承诺: 使用 git reset --soft HEAD~3 您将返回 3 个承诺(并忘记您以前做过这三个承诺) 做一个新的承诺: 现在简单地做 git commit -m <NEW_SINGLE_MESSAGE> 将自动结合 t
如果与 git reset 发生错误,您可以通过 git reset --soft <ORIGINAL_COMMIT> 返回原始状态。
如果您使用 TortoiseGit,您可以将函数结合到一个承诺:
打开 TortoiseGit 背景菜单 选择显示日志 标记日志视图中的相关任务 从背景菜单中选择组合到一个任务
此分類上一篇
此功能自动执行所有必要的单 git 步骤 不幸的是,仅适用于 Windows。
最方便的方式是使用 GitHub 桌面. 只需在历史中选择所有命令,右键单击并选择“Squash x 命令”:
此分類上一篇
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别