0

我记得做了一些事情,比如提交我的更改(在我的功能分支上)并与远程分支(不是主分支)合并。然后为了确保我的提交位于合并提交之上,我重新设置了最后两个提交并更改了顺序。我推动了这些变化,其他人也在此基础上做出了承诺。

现在,发生的事情是一些合并提交是用不同的提交 ID 挑选的,现在当我创建一个拉取请求时,它显示为我的。我可以理解这是因为我的分支中的相同更改来自不同的提交 ID,因此它显示为其他人创作并且我已提交,但更改未显示在文件选项卡中,因为更改已经存在。

这是我的参考日志

HEAD@{12}: rebase -i (finish): returning to refs/heads/my_branch_name

NEW COMMIT ID HEAD@{14}: rebase -i (pick): Messed up merge commit

NEW COMMIT ID HEAD@{15}: rebase -i (pick): Messed up merge commit

NEW COMMIT ID HEAD@{16}: rebase -i (pick): Messed up merge commit

NEW COMMIT ID HEAD@{17}: rebase -i (pick): Messed up merge commit

并且添加了一些提交,但在此之后其他人和我以及这个分支被其他几个人使用。我不知道如何解决这个问题

我能想到的一个想法是还原所有这些提交,但这将创建另外 4 个提交。

有什么办法可以解决这个问题吗?

4

1 回答 1

2

您需要做的第一件事是撤消您所做的事情,以便您可以做对。你没有提到你正在使用哪个分支,所以我假设它是master.

  1. 查看您的reflog并在您开始搞砸之前找到提交。
  2. 记下该提交的哈希值。
  3. 做:

git fetch origin master

git checkout -f master origin/master

要将“混乱”的主分支保存在新的分支名称下,请执行以下操作:

git branch messed-up-master

git push -u origin messed-up-master

现在它已保存,继续修复如下:

git reset --hard HASH

其中 HASH 是您从reflog.

git push -f

现在你回到了混乱之前的位置。然后努力找出正确的方法来做你想做的事。

于 2020-06-26T04:13:24.777 回答