Alejandro Asked: 2020-11-25 09:32:34 +0800 CST 2020-11-25 09:32:34 +0800 CST 2020-11-25 09:32:34 +0800 CST 将分支复制到另一个 git 772 事实证明,我一直在分支 A 上工作,而另一个团队的另一个人对同一个分支进行了 2 次提交并推送,现在从我的团队中,它不会让我在不先拉取并带来这 2 次提交的情况下推送我的更改,比如我可以撤消或删除它们或将我的本地内容传递到另一个分支以最终推送和集成吗? git 2 Answers Voted Best Answer ffflabs 2020-11-25T10:18:12+08:002020-11-25T10:18:12+08:00 假设您本地版本的分支 A 和他们的分支之间的共同祖先是带有 sha 的提交#asdfgh 如果您的同事想要保留他的测试提交,他可以将它们移动到另一个分支(如果您想走那条路线,也可以将您的移动到 branchA 的副本): git checkout ramaA git checkout -b RamaAModificada 然后,您可以通过强制遥控器的 HEAD 成为共同祖先来推送 git checkout ramaA git reset --hard asdfgh git push -f 之后,您可以再次带回干净的遥控器并毫无问题地推送: git checkout ramaA git fetch origin/ramaA git push 从现在开始,它可能比你自己做的更短 git push -f 并且随着你在本地的东西在远程的东西上迈出这一步,从而留下历史的错误提交。但是这条路径留下了一个边缘,只要他们仍然有脏提交,您的同事就无法在该分支上工作。 Francisco Rubial 2020-11-25T11:08:25+08:002020-11-25T11:08:25+08:00 如果您需要做的是通过从远程存储库中删除这两个提交来将您的更改推送回同一个分支 A,请首先将分支 A 上的本地 HEAD 与您当前对备份的提交分开: git checkout -b ramaB 现在 branchA 必须在原始 HEAD 中更新,因为您必须返回到其他人和您的提交开始的共同提交,如果您执行 git log,则应将其标记为您当前的来源,因为您还没有拉,假设它是“abc123” git checkout ramaA git reset --hard abc123 现在你应该清理远程仓库 git push origin ramaA --foce 整合您的更改 git merge ramaB 最后用您的更改再次更新 repo git push origin ramaA
假设您本地版本的分支 A 和他们的分支之间的共同祖先是带有 sha 的提交
#asdfgh
如果您的同事想要保留他的测试提交,他可以将它们移动到另一个分支(如果您想走那条路线,也可以将您的移动到 branchA 的副本):
然后,您可以通过强制遥控器的 HEAD 成为共同祖先来推送
之后,您可以再次带回干净的遥控器并毫无问题地推送:
从现在开始,它可能比你自己做的更短
并且随着你在本地的东西在远程的东西上迈出这一步,从而留下历史的错误提交。但是这条路径留下了一个边缘,只要他们仍然有脏提交,您的同事就无法在该分支上工作。
如果您需要做的是通过从远程存储库中删除这两个提交来将您的更改推送回同一个分支 A,请首先将分支 A 上的本地 HEAD 与您当前对备份的提交分开:
现在 branchA 必须在原始 HEAD 中更新,因为您必须返回到其他人和您的提交开始的共同提交,如果您执行 git log,则应将其标记为您当前的来源,因为您还没有拉,假设它是“abc123”
现在你应该清理远程仓库
整合您的更改
最后用您的更改再次更新 repo