我的朋友正在研究项目的一部分,我正在研究另一部分。
我的朋友刚刚提交了一些未经过代码审核的代码。我需要撤消这个。但是,我也不希望他失去任何作品。
基本上,我想回到大约20分钟的时间 - 我希望他能在他的机器上进行所有更改,但我希望我们的主分支机构不要进行这些更改。
这样做的最佳方法是什么?我担心做一个git重置 - 硬 - 我觉得这是永久性的,我担心这样做会擦掉我朋友的电脑上的文件,当他做一个git pull。
答案 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