gpt4 book ai didi

Git rebase 仅未推送的提交

转载 作者:行者123 更新时间:2023-12-05 07:04:20 26 4
gpt4 key购买 nike

有没有一种 rebase 的方法,它只能重写本地历史(尚未推送)。我想如果该检查未通过,它将回退到 merge 。

这里的问题归结为一个简单的功能分支。

git checkout -b feature master
# DO WORK
git commit -m "COMMIT1"
git push -u origin feature # COMMIT1 is public
# DO WORK
git commit -m "COMMIT2"
git fetch origin master:master # background update master with some random commits
git rebase master # This rewrites both COMMIT1 and COMMIT2
git push # fails because COMMIT1 was rewritten
git push -f # banned by Infrastructure

所以我想要这样的东西:

  • git rebase mastermerge --ff-only 类似,如果它会改变公共(public)历史则失败
  • git pull --rebase 但带有“rebase-or-merge”语义

最佳答案

当你做 rebase 时,git 会将旧的提交保存在他的存储中,这样它们就不会被删除,但是历史会被改变。学习rebase .

首先,看看reflog .使用此实用程序,您可以找到必要的提交,这些提交已重新定位。

然后,只需使用软reset这样你就可以将你的 feature 分支指向旧的 sha1 提交(就像在服务器上一样)。

最后,要添加其他提交的更改,我建议使用 cherry-pick .

关于Git rebase 仅未推送的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62954293/

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