git - 如何将我的分支重置为我在分离 HEAD 模式下创建的提交?

标签 git git-reset git-detached-head

我不知道在这种情况下 Git 图表是什么样子,所以在我不小心丢失任何代码之前,我想我会寻求帮助。

我提交了一些破坏了东西的代码,所以我检查了之前的提交来看看出了什么问题。

commit 87dfs7f6d6fs8 (latest commit on master) 
commit 7fe7f86we6f8d6 <-- checked out this guy

但是,我忘记重新 checkout master 来解决问题,而是将其修复为 detached-HEAD 状态。

所以,现在,我的 Git 历史看起来像这样......(我猜)

commit 87dfs7f6d6fs8 (latest commit on master) 

  |--- commit 6f5dsf5d65f <-- New commit (currently checked out)
commit 7fe7f86we6f8d6 <-- checked out this guy

我想做的是完全摆脱最顶层的提交并保留我所做的更改。我认为要做到这一点,我需要将 reset --hard 重置为我当前所在的提交哈希,对吧?

所以,它是:

git reset --hard 6f5dsf5d65f

其中 commit 6f5dsf5d65f 是我在 detached-HEAD 状态下所做的提交。这是正确的吗..?

最佳答案

What I'd like to do is completely get rid of the topmost commit [87dfs7f6d6fs8] and keep the changes that I made.

如果我正确理解你的问题,你基本上需要

  1. stash 未提交的更改(如果有),
  2. 使 master 分支指向提交 6f5dsf5d65f 而不是 87dfs7f6d6fs8
  3. pop 储藏室(如有必要)。

检查是否需要通过运行git status来创建存储。如果它告诉您您有一个干净的工作状态,请运行

git checkout master            # important!
git reset --hard 6f5dsf5d65f

否则,运行

git stash save 
git checkout master            # important!
git reset --hard 6f5dsf5d65f
git stash pop

请注意,无论哪种情况,您都需要先检查master,然后才能重置它;在 detached-HEAD 状态下运行 git reset 只会移动 HEAD

关于git - 如何将我的分支重置为我在分离 HEAD 模式下创建的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27891173/

相关文章:

git - 获取自特定日期时间以来分支中的更改列表

git - 如何从特定提交继续项目并修复 HEAD 分离问题?

git - 切换到远程分支获取分离头

xcode - .gitignore 文件,我应该把它放在我的 xcode 项目的什么地方?

macos - Github Mac权限问题

git - 从 git 存储库中删除文件

git - 无法提交文件,意外地用 mv 重命名

git - 恢复已添加到索引但随后被 git reset 删除的文件

git - 有没有办法在不输入分支名称的情况下将我的存储库硬重置为上游版本?

git - 我可以推送在分离的 HEAD 状态下进行的提交吗