Git 重置不对本地或远程进行任何更改

Git reset not making any changes to local or remote

我有一个需要 git reset --hard 到特定提交的 Bitbucket 存储库。在此操作之前,我有这个:

% git status
On branch master
Your branch and 'origin/master' have diverged,
and have 16 and 15 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

nothing to commit, working tree clean

我 运行 git reset --hard 在本地使用这样的提交 ID 命令:

git reset --hard 798cd84

然后我 运行 git pull 并且发生了预期的快进。

Updating 798cd845..22bd077a
Fast-forward
.
.
.
24 files changed, 705 insertions(+), 80 deletions(-)

之后,我做了git status,看到它在说

% git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

但本地没有更改为 git log。我尝试了 git commit -m "my comments",结果显然没有提交任何内容。

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

在 Bitbucket 上没有任何变化,很明显,因为我没有任何东西可以推送。但是当我试图推动任何东西时,遥控器什么也没有。它只是说 Everything up-to-date.

那么,如果我在本地无法使用 git commitgit push 做任何事情,我该如何在远程上实现此更改?

如果我把这件事严重搞砸了,我该如何恢复到本地状态以便我可以尝试其他方法?

如果我理解正确的话,我认为关键是这一行:

Your branch and 'origin/master' have diverged, and have 16 and 15 different commits each, respectively.

因此,两个版本的分支都有共同的历史记录,然后:

  • 在您的本地历史记录中有 16 次提交
  • 远程历史记录中有 15 次提交

考虑到数字的相似性,16 个本地提交中的 15 个 是 15 个远程提交中的 并行版本 .也就是说,您或其他人拥有 运行 git rebase 或相关命令,并创建了这些提交的新版本。

因此,当您丢弃 16 次提交并拉入远程 15 次提交时,大部分日志历史看起来都一样 - 所有相同的提交消息,作者,和作者身份日期,除了您丢弃的那次额外提交。

换句话说,它只是看起来与远程分支同步没有任何区别,因为它已经非常相似