2014-03-13 73 views
3

我有3个提交(我目前只在我的本地机器上使用GIT)。删除本地提交?

如果我删除提交2,是否会影响提交3中的任何更改,因为提交3是从提交2开始的后续操作?

我打算用:

git reset --hard <commit 2 id here> 
+1

取决于您如何“删除”提交2.您计划执行的命令是什么? – Shahbaz

+0

更新的问题与计划命令。但是,如果存在这样的命令,我宁愿采用更安全的方式? – oshirowanen

+0

如果你'git reset --hard',那么你不会删除一个提交,你只需要回到一个较旧的提交(基本上失去了所有的东西)。你可以尝试'git revert'来取消一个提交,或者'git rebase',它将这个提交重新应用到前一个提交,从而有效地消除了之间的提交。我个人会选择'git revert'。 – Shahbaz

回答

4

命令

git reset --hard <commit 2 id here> 

不会删除提交2.这将只是把你当前分支上提交2.如果没有其他分支指向提交3你可能垃圾回收过程中失去它。

你需要的是互动变基:

git rebase -i HEAD~2 

然后你会得到编辑开始犯2和3提交上市。使用提交2删除该行,保存并退出编辑器。这将删除提交2,并保留提交3。提交3的父代将是提交1.所有与提交2一起引入的更改将完成。

+0

提及git rebase -i +1 – Tim

0

提交#3将与新的母公司更新提交你的情况提交#1,它会得到一个新的SHA1。如果您提交#2和#3的更改是独立的,则不应有任何问题/冲突。

0

你的建议只会删除你的第三次提交,并保留提交一和二。这是您可以使用git rebase的其中一种情况。

的语法是这样的:

git rebase --onto <branch name>~<first commit number to remove> \ 
<branch name>~<first commit to be kept> <branch name> 

我建议你尝试一下你的reop的副本第一。