我如何将最后的N承诺集成到一个承诺中?
当前回答
如果你想写下新的承诺消息从滑板,这就足够了:
git reset --soft HEAD~3 &&
git commit
如果你想开始编辑新的承诺消息与现有承诺消息的折叠(即类似于什么一个 pick/squash/squash/.../squash git rebase -i 指示列表会开始你),那么你需要提取这些消息,并将它们转移到 git commit:
git reset --soft HEAD~3 &&
git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})"
两种方法都将过去三项承诺分成一个单一的新承诺,相同的方式。 软重定义只会重新点头到最后一项承诺,你不想分解。 无论指数还是工作树都不会被软重定义所触摸,让指数在你新承诺所需的状态(即它已经有所有从你即将“扔掉”的承诺的变化)。
其他回答
警告:“我的最后一个X承诺”可能是双重的。
(MASTER)
Fleetwood Mac Fritz
║ ║
Add Danny Lindsey Stevie
Kirwan Buckingham Nicks
║ ╚═══╦══════╝
Add Christine ║
Perfect Buckingham
║ Nicks
LA1974══════════╝
║
║
Bill <══════ YOU ARE EDITING HERE
Clinton (CHECKED OUT, CURRENT WORKING DIRECTORY)
在这个非常简短的历史 https://github.com/fleetwood-mac/band-history 存储库中,您已经打开了一个引用请求,将 Bill Clinton 承诺融入原始(MASTER) Fleetwood Mac 承诺中。
四个承诺:
想象任何人都不会关心阅读完整的存储库历史(实际上有一个存储库,点击上面的链接!) 你决定破坏这些承诺,所以你去运行 git reset --soft HEAD~4& git commit. 然后你 git push --force it to GitHub to clean up your PR.
你只是做了一个单一的承诺,从弗里茨到比尔·克林顿,因为你忘记了昨天你在这个项目的巴金汉尼克版本工作,而吉特日志不符合你在GitHub上看到的东西。
故事的道德
如果您正在使用 GitUp,选择您想要与其父母合并的承诺,并按下 S. 您必须为每个承诺做一次,但它比与正确的命令线引发更简单。
许多答案是基于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> 返回原始状态。
我如何将我的最后一个X承诺集成到一个使用Git的承诺?
git rebase -i HEAD~X
下列内容将显示:
pick 1bffc15c My earlier commit
pick 474bf0c2 My recent commit
# ...
对于你想要的承诺,请用 fixup 取代 pick,所以它会变成:
pick 1bffc15c My earlier commit
fixup 474bf0c2 My recent commit
# ...
如果它在 vim 中打开(终端内默认界面),然后按 Esc 在键盘上,输入 :wq 并输入以保存文件。
查看: 查看 git log
有人提到在 IntelliJ IDEA UI 上做得多容易:
转到 git 窗口 手动选择所有要融入一个的承诺. 右键单击 > Squash 承诺 > 编辑失败的承诺消息 点击左侧的分支名称 > 右键单击 > Push > Force Push
此分類上一篇
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别