【问题标题】:Reset master to HEAD^ instead of HEAD and committed, how to recover? [duplicate]将master重置为HEAD^而不是HEAD并提交,如何恢复? [复制]
【发布时间】:2019-11-27 23:29:13
【问题描述】:

这是我做任何事情之前本地分支的状态:

B

这是遥控器:

B

我在存储库上运行 git add -A 并观察到它花费的时间太长。原来我没有忽略目录v3 与大型开发工件。所以我运行git reset HEAD^ 以使索引看起来像运行add 之前所做的那样,然后将v3 目录添加到.gitignore,再次运行add 并提交更改(称为提交C)。

当我尝试将东西推送到远程时,Git 开始抱怨。结果是通过运行reset HEAD^ 而没有提交任何内容,我在历史上跳得太远了,本地分支如下所示:

C

这会造成远程有 B 而本地没有的冲突。我必须运行的正确命令是git reset HEAD。我该如何解决这个问题?

【问题讨论】:

标签: git git-reset


【解决方案1】:

所以我运行了 git reset HEAD^ 以使索引看起来像它在运行 add 之前所做的那样

应该是git resetgit reset HEAD 的缩写)

尝试git reflog 看看HEAD 在你的 git 重置之前是什么,然后 git 重置到那个提交。
首先保存您的工作,以防这些命令不符合预期。

【讨论】:

    【解决方案2】:

    您只需要将更改重新定位到远程分支。

    假设您正在使用远程 origin/master 处理 master,只需执行以下操作:

    git rebase origin/master
    

    这会将 C 移动到 B 之后而不是 A 之后。

    【讨论】:

      猜你喜欢
      • 2022-11-30
      • 1970-01-01
      • 2017-07-14
      • 2012-03-20
      • 2022-01-12
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      相关资源
      最近更新 更多