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

Posted

技术标签:

【中文标题】Git重置不对本地或远程进行任何更改【英文标题】:Git reset not making any changes to local or remote 【发布时间】:2022-01-11 19:37:20 【问题描述】:

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

% 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

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

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 做任何事情,我该如何在遥控器上进行此更改?

如果我把这件事搞砸了,我该如何在本地恢复正常,以便我可以尝试其他东西?

【问题讨论】:

你是说本地没有任何改变,但输出 24 files changed, 705 insertions(+), 80 deletions(-) 另有说明 不清楚你的实际目标是什么。你的问题似乎是“我如何在遥控器上影响这个变化”,但你没有说“这个变化”实际上是什么。另外,为什么你硬重置master 以在本地提交 798cd84 然后立即拉动origin/master?您是否想摆脱本地主机上的所有内容并将其设置为远程主机?如果是,您可以一开始就硬重置为origin/master - 但不用担心 - 您只需使用两个命令即可。 【参考方案1】:

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

您的分支和“origin/master”已经分道扬镳,分别有 16 和 15 个不同的提交。

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

本地历史记录中有 16 次提交 远程历史记录中有 15 次提交

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

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

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

【讨论】:

是的,在此之前我尝试了几次失败的变基,现在我只是试图重置为“已知良好”状态。如果我为新代码添加新文件或其他更改,这可能会再次朝着正确的方向发展吗? @user3169905 是的,您显示的所有输出都表明您已成功使本地分支与远程分支匹配。 请注意,如果您仔细保存了所有 hash ID,您会发现它们都是不同的。不同的哈希 ID,相同的(以一个时间戳为模)内容。

以上是关于Git重置不对本地或远程进行任何更改的主要内容,如果未能解决你的问题,请参考以下文章

如何撤消重置(Git / TortoiseGit)?

删除/重置远程主 Git 存储库

Git回滚到历史节点(SourceTree篇)

Git回滚到历史节点(SourceTree篇)

git vs sourcetree

text git add后重置更改。