我如何将最后的N承诺集成到一个承诺中?
当前回答
您可以按照 git 命令使用。
git rebase -i HEAD~n
n(=4在这里)是最后的承诺的数字,然后你得到了以下选项,
pick 01d1124 Message....
pick 6340aaa Message....
pick ebfd367 Message....
pick 30e0ccb Message....
更新如下,选择一个承诺,并将其他人推到最新的,
p 01d1124 Message....
s 6340aaa Message....
s ebfd367 Message....
s 30e0ccb Message....
详细信息点击链接
其他回答
基于这篇文章,我发现这个方法对我的使用更容易。
我的“dev”分支在“起源/dev”前面有96个承诺(因此这些承诺尚未推到远程)。
我宁愿将分支重新设置为“起源/dev”状态(这将使96个分支的所有变更无效),然后立即进行变更:
git reset origin/dev
git add --all
git commit -m 'my commit message'
使用 git rebase -i <after-this-commit> 并在第二次和随后的命令中取代“squash”或“fixup”,如手册中所描述。
在此例子中, <after-this-commit> 是 SHA1 hash 或当前分支的 HEAD 的相对位置,从该分支的 Commits 被分析为 rebase 命令. 例如,如果用户希望从当前 HEAD 查看 5 个 Commits 在过去的命令是 git rebase -i HEAD~5.
最方便的方式是使用 GitHub 桌面. 只需在历史中选择所有命令,右键单击并选择“Squash x 命令”:
此分類上一篇
有人提到在 IntelliJ IDEA UI 上做得多容易:
转到 git 窗口 手动选择所有要融入一个的承诺. 右键单击 > Squash 承诺 > 编辑失败的承诺消息 点击左侧的分支名称 > 右键单击 > Push > Force Push
此分類上一篇
程序1
(一)定义承诺短暂的哈希
# git log --pretty=oneline --abbrev-commit
abcd1234 Update to Fix for issue B
cdababcd Fix issue B
deab3412 Fix issue A
....
在这里,即使是 git log --oneline 也可以用来获得短暂的 hash。
# git rebase -i deab3412
....
pick cdababcd Fix issue B
pick abcd1234 Update to Fix for issue B
....
....
pick cdababcd Fix issue B
squash abcd1234 Update to Fix for issue B
....
# git log --pretty=oneline --abbrev-commit
1122abcd Fix issue B
deab3412 Fix issue A
....
# git push origin +master
程序2
首先,添加所需的文件
git add <files>
git commit --fixup=OLDCOMMIT
现在这个创建了一个新的承诺在头顶与 fixup1 <OLDCOMMIT_MSG>。
其次,下令下令下令下令下令下令下令下令下令下令下令下令。
git rebase --interactive --autosquash OLDCOMMIT^
在这里 ^ 意味着以前的承诺到 OLDCOMMIT. 这个 rebase 命令在一个编辑器(vim 或 nano)上打开了互动窗口,我们不需要做任何事情,只是保存和输出是足够的. 因为转移到此的选项将自动移动最新的承诺到旧的承诺旁边,并将操作转换为 fixup(相当于 squash)。 然后 rebase 继续完成。
程序3
如果需要将新的更改添加到最后的承诺方式 - 更改可以使用 git-commit。
# git log --pretty=oneline --abbrev-commit
cdababcd Fix issue B
deab3412 Fix issue A
....
# git add <files> # New changes
# git commit --amend
# git log --pretty=oneline --abbrev-commit
1d4ab2e1 Fix issue B
deab3412 Fix issue A
....
结论
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别