这是我的情况:
大约 10 次提交前,我不小心做了一个错误的提交。我在 UNIX/Windows 之间切换,长话短说,由于行结尾,我做了一个提交,每个文件都被更改了。
在那之后我做了大约 10 次提交。
我现在意识到,为了推送到远程存储库,我需要撤消步骤 (1) 中的提交(
.gitattributes
我已经修改了一个设置以使其正常化)。
我如何回到那个时间点而不提交每个文件?然后我需要在那之后重新提交其他 9 个更改?
这是我的情况:
大约 10 次提交前,我不小心做了一个错误的提交。我在 UNIX/Windows 之间切换,长话短说,由于行结尾,我做了一个提交,每个文件都被更改了。
在那之后我做了大约 10 次提交。
我现在意识到,为了推送到远程存储库,我需要撤消步骤 (1) 中的提交(.gitattributes
我已经修改了一个设置以使其正常化)。
我如何回到那个时间点而不提交每个文件?然后我需要在那之后重新提交其他 9 个更改?
如果你还没有推送你的 10 次提交,或者你的远程仓库是私有的并且没有与其他人共享,那么你可以尝试使用交互式 rebase:
$ git rebase -i head~10 # Go back 10 commits in time.
在 TODO 提交列表中,选择edit
列表顶部的提交:
edit d6627aa Commit message 1
pick 0efdaca Commit message 2
pick 9ec752f Commit message 3
pick c84bf57 Commit message 4
pick d4bcd50 Commit message 5
pick c0110c9 Commit message 6
pick 6606d13 Commit message 7
pick 22933be Commit message 8
pick cab2453 Commit message 9
pick 05add41 Commit message 10
然后修改您的最后一次提交以将行尾更改为您想要的:
# Modify your .gitattributes, then amend last commit
$ git commit --amend
$ git rebase --continue
要了解有关变基的更多信息,请参阅免费在线 Pro Git 书籍的重写历史部分,以及.rebase