与其他人一起处理项目时,我需要撤消朋友的最后3次提交

时间:2012-07-14 00:27:45

标签: git

我的朋友正在研究项目的一部分,我正在研究另一部分。

我的朋友刚刚提交了一些未经过代码审核的代码。我需要撤消这个。但是,我也不希望他失去任何作品。

基本上,我想回到大约20分钟的时间 - 我希望他能在他的机器上进行所有更改,但我希望我们的主分支机构不要进行这些更改。

这样做的最佳方法是什么?我担心做一个git重置 - 硬 - 我觉得这是永久性的,我担心这样做会擦掉我朋友的电脑上的文件,当他做一个git pull。

5 个答案:

答案 0 :(得分:0)

首先,即使您不小心永久删除了某些内容,Git默认会保留已删除项目的记录数周,因此您可能仍然可以恢复。请注意,这仅适用于某些时刻已提交或隐藏的更改。

其次,如果文件将他的更改移动到单独的分支并且不在该分支上签出远程,则在执行拉取时不会删除这些文件。或者他只是做了一次抓取和樱桃选择。

无论如何,我个人没试过,但我相信你想要的命令是

git reset --soft HEAD~3

这会将head的位置更改为3次提交,同时将新文件保留在工作树中。

答案 1 :(得分:0)

试试这个

git reset HEAD^^^

为要撤消的每个提交添加一个^

答案 2 :(得分:0)

我要做的是:

git log

复制要返回的提交的校验和(例如085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7),然后执行结帐。这将使用过去的版本更新您的工作树。

git checkout 085bb3

您现在应该将工作文件复制到另一个目录(您当前不在工作树下)。

然后返回主/主分支

git checkout master

现在你回到工作树了。

答案 3 :(得分:0)

我建议使用git revert。 Revert将创建一个新的提交,以反转恢复的提交。这意味着原始提交是完整的,并且还具有仅删除违规提交的好处,而不是之后发生的所有提交。所以,如果你要删除的提交是xxxxx,你可以这样做:

git revert xxxxx

默认情况下,提交消息会告诉其他人它是一个恢复,并且它将显示原始提交ID,以便每个人都可以轻松找到恢复的提交。

答案 4 :(得分:0)

这是我要做的。 git branch not_code_reviewed_yet。这将创建一个包含您朋友的更改的分支,因此您可以稍后再回到它们。 git reset --hard <commit you want master to go back to>。这应该在您的朋友改变之前将主人回到提交。版本图现在应该看起来像

A
 \-B-C-D

A为主人,D为not_code_reviewed_yet