Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 与其他人一起做一个项目,我需要撤销我的朋友';s的最后3次提交_Git - Fatal编程技术网

Git 与其他人一起做一个项目,我需要撤销我的朋友';s的最后3次提交

Git 与其他人一起做一个项目,我需要撤销我的朋友';s的最后3次提交,git,Git,我的朋友正在做这个项目的一部分,而我正在做它的另一部分 我的朋友刚刚提交了一些未经代码审查的代码。我需要解开这个。然而,我也不希望他失去任何工作 基本上,我想回到时间大约20分钟-我希望他在他的机器上有他的所有变化,但我希望我们的主分支没有这些变化 最好的方法是什么?我担心做一个git重置——很难——我知道这是永久性的,而且我担心这样做会在我朋友做git拉取时删除他计算机上的文件。首先,即使你不小心永久删除了一些东西,git默认情况下会将删除的项目记录保留几周,所以你还是可以康复的。请注意,这仅

我的朋友正在做这个项目的一部分,而我正在做它的另一部分

我的朋友刚刚提交了一些未经代码审查的代码。我需要解开这个。然而,我也不希望他失去任何工作

基本上,我想回到时间大约20分钟-我希望他在他的机器上有他的所有变化,但我希望我们的主分支没有这些变化


最好的方法是什么?我担心做一个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:)