在推送之前删除1.提交

时间:2016-08-25 10:55:02

标签: git

我在核心文件中意外更改并保存并进行了提交。并进行其他更改并创建新的提交。我的真实项目是在提交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?

2 个答案:

答案 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甚至更好,但还有其他更简单的方法。

解决方案#1

例如,您可以在提交#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

解决方案#2

另一种解决方案是使用git rebase --interactive

git rebase --interactive HEAD~2

它会在您的编辑器中打开一个包含2行的文件(以及下面注释中的使用说明)。这些行描述了您最近的两次提交。删除第一个(在确保它显示与提交#2相同的哈希之后),保存文件并退出编辑器。 Git处理该文件,并在后台执行与上述解决方案#1中提供的操作类似的操作。

相关问题