2

我正在“事后记录”应用程序开发的历史,通过移动项目目录树的现有快照(这些快照由普通和原始文件夹副本保存,而不是 git 或任何其他版本控制)混帐。

在努力学习 git 的新概念和新术语之后,这个迁移过程似乎进展顺利,突然我发现:“糟糕……我的最后一个git commit+git branch <branchname>跳过了一个快照。”

由于提交快照的顺序对我很重要,我想完全撤消最后一个git commit+ git branch <branchname>就好像它从未完成一样

也就是说,“通过修改提交来修复”,如Git 书籍的Undoing in Git一章底部所定义。

一切仍然是本地的(我还没有“发布”也没有“推送”任何东西),所以我相信这符合关于“重写历史”的警告。:)

根据我的理解,您能否确认或更正以下所需的步骤?

  1. 清空工作目录(.git当然不删除子目录)
  2. git checkout <folder-name> (在我提交错误的文件夹并通过 git 分支对其进行标记后立即将工作目录恢复到状态)
  3. git branch -D <branchname-of-mistaken-folder-commit>
  4. git commit --amend

在这一点上,我希望 git 不再记得最后一个分支和提交已经完成,并且工作目录包含错误的文件夹(我将删除它,完全替换为我跳过的那个)。这个对吗?

4

1 回答 1

1

要删除您刚刚所做的提交,假设您在master分支上,您所要做的就是:

  1. git branch -D <name of the branch>删除分支
  2. git reset --hard HEAD^将当前分支重置为上一个提交及其所在的工作目录

之后,您可以正常提交忘记的目录,然后再提交您重置的目录。

于 2011-07-09T17:04:50.960 回答