我在核心文件中意外更改并保存并进行了提交。并进行其他更改并创建新的提交。我的真实项目是在提交1中。
commit e8e7a9....
Author:
Date:
Commit message 1 (Real Project)
----------------------------------------------
commit e8e7a9....
Author:
Date:
Commit message 2 (Remove this one)
----------------------------------------------
commit e8e7a9....
Author:
Date:
Commit message 3 ( It must be there)
我只想删除提交,但是如果我这样做,我是否会更新已删除的提交或者它有多危险,我该怎么办?
如果我使用它是否正确?
git reset --soft HEAD~2
更新:
在我必须尽可能推送到远程git服务器的新分支2.Commit?
答案 0 :(得分:1)
可以使用
git reset --soft HEAD~2
这将在最后两次提交中取消您的更改,这并不意味着您丢失了更改。在此之后你可以使用
git status
查看所有更改。您可以删除不需要的那些,然后提交所需的那些。
git add <the_required_files>
git commit -m "my commit message"
你可以像以后一样推动
git push <remote_name> <branch_name>
答案 1 :(得分:0)
git reset --soft
(如this answer中所述),git reset --mixed
甚至更好,但还有其他更简单的方法。
例如,您可以在提交#3上创建临时分支或标记,只是为了引用它,将当前分支重置为#1,樱桃选择提交#3,如果您&#39 ;对结果满意,删除临时分支或标记:
# assuming the current branch points to commit #3
git branch temp
git reset --hard HEAD~2
git cherry-pick temp
git branch -d temp
另一种解决方案是使用git rebase --interactive
:
git rebase --interactive HEAD~2
它会在您的编辑器中打开一个包含2行的文件(以及下面注释中的使用说明)。这些行描述了您最近的两次提交。删除第一个(在确保它显示与提交#2相同的哈希之后),保存文件并退出编辑器。 Git
处理该文件,并在后台执行与上述解决方案#1中提供的操作类似的操作。