Git:忘记提交然后重新提交

Git: Forget commits and then recommit

TL;DR 使 git "forget" 在主控之前对本地的未决提交。

大家好,

我有一个 git 设置。这是问题的逐步格式:

  1. 创建一个包含 10+MB 文件的子项目
  2. git 添加。
  3. git commit -a -m "blah blah".
  4. 弄清楚这个文件根本不应该在 Git 中。
  5. 修改 .gitignore 添加如下行 largefiledir/

所以,现在我的 git 通过提交领先于 master。我希望 git 忘记此提交,然后重做 "git add . /git commit" 过程,就好像在坚持修改后的文件之前从未见过更新的文件一样。git忽略文件。

我到底要怎么做才能做到这一点?我为我的问题道歉,但我 运行 进入了一些讨论使用 "git rebase" 的帖子,上次我尝试这样做时,我最终扔掉了我的工作目录并再次从 master 签出。

非常感谢任何帮助。

首先,您应该清理工作目录(如果您现在不提交更改,请删除未跟踪的文件 .gitignore)。然后使用 git status 仔细检查工作树是否干净。

然后你可以使用

git reset HEAD~

它会将 HEAD 重置为之前的提交,同时将子项目作为未处理的文件保存在您的 git 存储库中。

如果您仍然没有在远程推送您的提交,您可以这样做

git reset HEAD~

确保执行 git status 并检查它是否干净

对于添加,最好在提交更改并将更改推送到远程存储库之前从工作分支 git pull 更改和 git rebase

可以参考这个linkhttps://www.atlassian.com/git/tutorials/merging-vs-rebasing