gpt4 book ai didi

最后两次提交的 Git rebase 非交互 - 写一个批处理文件

转载 作者:太空狗 更新时间:2023-10-29 14:00:28 25 4
gpt4 key购买 nike

请帮助我为 git rebase 编写一个批处理文件,它将当前分支中的最后两个提交:HEADHEAD~1 merge 到一个不使用交互式编辑器的。

假设两个提交都只有一个父提交并且还没有被推送。

a683ec1 Not pushed 2
c7b480a Not pushed 1
f0e81fb Pushed

我想留下“Pushed”提交和它后面的一个提交,它将包含“Not pushed 1”+“Not pushed 2”,最终状态为“Not pushed 2”。

最佳答案

我们的想法是:

git reset --soft @~ # reset HEAD, preserve current working tree and index
git commit --amend -m "squash HEAD and HEAD~"

但这并没有解决提交消息:来自 ORIG_HEAD 的消息将会丢失。
torek地址in the comments .

如果您有多个压缩提交(自 origin/master 起),您可以做的是(假设您没有任何正在进行的工作):

echo "squash everything since origin/master" > /tmp/msg
git log --format=%B origin/master~3.. >> /tmp/msg
git reset --soft origin/master
git commit -F /tmp/msg

这一次,您不会修改重置为的提交(因为 origin/master 已经被推送),但您创建了一个新提交。

关于最后两次提交的 Git rebase 非交互 - 写一个批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23949291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com