Git:忘记提交然后重新提交
Git: Forget commits and then recommit
TL;DR 使 git "forget" 在主控之前对本地的未决提交。
大家好,
我有一个 git 设置。这是问题的逐步格式:
- 创建一个包含 10+MB 文件的子项目
- git 添加。
- git commit -a -m "blah blah".
- 弄清楚这个文件根本不应该在 Git 中。
- 修改 .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
TL;DR 使 git "forget" 在主控之前对本地的未决提交。
大家好,
我有一个 git 设置。这是问题的逐步格式:
- 创建一个包含 10+MB 文件的子项目
- git 添加。
- git commit -a -m "blah blah".
- 弄清楚这个文件根本不应该在 Git 中。
- 修改 .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