gpt4 book ai didi

git - 5 次提交到错误的分支并推送到远程/源

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

所以我不小心对分支“A”进行了 5 次提交,但我打算将其提交到分支“B”。我还将所有提交推送到远程/源。我意识到我已经对错误的分支做出了所有 promise 。有什么办法可以将所有这 5 次提交转移到分支“B”并使我的分支“A”与 5 次提交之前一样?

最佳答案

checkout 到 A。按顺序复制并粘贴 5 个提交哈希值。

例如5(最旧)-> 4 -> 3 -> 2 -> 1(最新),假设 1 是 git log 命令的最高提交。

$ git checkout A
$ git log
# copy the 5 commit hashes

checkout 到 B 并将 (cherry-pick) 5 次提交到 B 分支。

$ git checkout B

$ git cherry-pick <commit-hash>
# repeat 5 times with new commit hash each time (old to new)

# Or, you can cherry-pick a range of commits by 'git cherry-pick <from-commit>^..<to-commit>', note '^' sign
$ git cherry-pick <commit-5>^..<commit-1>

现在,撤消(硬重置)A 的最新 5 次提交。请注意,硬重置将更改您的 A 的 git 历史记录(如果其他人已经在本地 pull 了 A 分支,那么您可以使用 revert 而不是 hard reset)。因此,需要force push 来推送分支A

$ git checkout A
$ git branch A.bac # backup branch 'A' for safety

$ git reset --hard HEAD~5 # undo last 5 commits from branch A
$ git push -f origin HEAD # need force push since history is changed

注意:挑选一系列提交的基本形式是:

$ git cherry-pick abc1234..def5678

abc1234 是最旧的提交,def5678 是最新的提交。 abc1234 未包含在提交中,但包含 def5678。如果你想包含 abc1234 然后通过在 abc1234 之后放置一个 ^abc1234 的上一次提交开始范围喜欢:

$ git cherry-pick abc1234^..def5678

关于git - 5 次提交到错误的分支并推送到远程/源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45874414/

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