Git 与其他人一起做一个项目,我需要撤销我的朋友';s的最后3次提交
我的朋友正在做这个项目的一部分,而我正在做它的另一部分 我的朋友刚刚提交了一些未经代码审查的代码。我需要解开这个。然而,我也不希望他失去任何工作 基本上,我想回到时间大约20分钟-我希望他在他的机器上有他的所有变化,但我希望我们的主分支没有这些变化Git 与其他人一起做一个项目,我需要撤销我的朋友';s的最后3次提交,git,Git,我的朋友正在做这个项目的一部分,而我正在做它的另一部分 我的朋友刚刚提交了一些未经代码审查的代码。我需要解开这个。然而,我也不希望他失去任何工作 基本上,我想回到时间大约20分钟-我希望他在他的机器上有他的所有变化,但我希望我们的主分支没有这些变化 最好的方法是什么?我担心做一个git重置——很难——我知道这是永久性的,而且我担心这样做会在我朋友做git拉取时删除他计算机上的文件。首先,即使你不小心永久删除了一些东西,git默认情况下会将删除的项目记录保留几周,所以你还是可以康复的。请注意,这仅
最好的方法是什么?我担心做一个git重置——很难——我知道这是永久性的,而且我担心这样做会在我朋友做git拉取时删除他计算机上的文件。首先,即使你不小心永久删除了一些东西,git默认情况下会将删除的项目记录保留几周,所以你还是可以康复的。请注意,这仅适用于在某个时间点提交或隐藏的更改 其次,如果他将更改移动到一个单独的分支,并且没有在该分支上签出remote,则在执行拉取操作时不会删除文件。或者他只是去捡东西,cherry挑零钱 无论如何,我没有亲自尝试过,但我相信你想要的命令是
git reset --soft HEAD~3
这将在工作树中保留较新的文件时,将头的位置更改为3个提交之前的位置。尝试此操作
git reset HEAD^^^
为每个要撤消的提交添加一个^
。我要做的是:
git log
复制要返回的提交的校验和(例如085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7),然后执行签出。这将用过去的版本更新工作树
git checkout 085bb3
您现在应该将工作文件复制到另一个目录(您当前不在工作树下)
然后回到你的主分支
git checkout master
现在回到工作树。我建议使用git revert。Revert将创建一个新的提交,该提交将反转已还原的提交。这意味着原始提交是完整的,并且其好处是只删除有问题的提交,而不是删除此后发生的所有提交。因此,如果要删除的提交是xxxxx,则可以执行以下操作:
git revert xxxxx
默认情况下,提交消息将告诉其他人这是一次恢复,并且它将显示原始提交id,以便每个人都可以轻松找到已恢复的提交。下面是我要做的。
git分行尚未审核编码
。这将使用您朋友的更改创建一个分支,以便您可以稍后返回。
git重置--硬
。这将在您的朋友更改之前将主控恢复到提交状态。版本图现在应该如下所示
A
\-B-C-D
默认情况下,A为主控,D为未审核的代码。默认情况下,它保留最新的头记录。没有保证。而且只有在它曾经被提交(或隐藏)的情况下。不知道
~X
语法!太棒了,tks:)