Git回滚我的提交

Git回滚我的提交,git,version-control,Git,Version Control,我承诺我的目标并将其推到Git。 我的同事们做出了改变。 我提交了更多的更改 有人告诉我,我的更改无法进行测试 此版本必须在下一版本中发布。我必须收回所有更改,仅收回我的更改。我该怎么做 我在将我的更改推送到Git时使用了乌龟。我正在使用windows XP机器 是的,在推动我的承诺之前,我让我的同事工作 不过我必须提到,我的更改是针对完全不同的文件的。我的同事都没有碰他们 它只是一个分支,即集成分支。假设初始集成回购是I,当您的提交是Y,之后您的同事提交是C。因此,开发线可能是这样的。目前文件

我承诺我的目标并将其推到Git。 我的同事们做出了改变。 我提交了更多的更改

有人告诉我,我的更改无法进行测试 此版本必须在下一版本中发布。我必须收回所有更改,仅收回我的更改。我该怎么做

我在将我的更改推送到Git时使用了乌龟。我正在使用windows XP机器

是的,在推动我的承诺之前,我让我的同事工作

不过我必须提到,我的更改是针对完全不同的文件的。我的同事都没有碰他们


它只是一个分支,即集成分支。

假设初始集成回购是I,当您的提交是Y,之后您的同事提交是C。因此,开发线可能是这样的。目前文件系统是F

          (F)    
I--Y--C1--C2
           ↑
          HEAD
正如你提到的

但我必须指出,我的改变是完全不同的 文件夹。我的同事都没有碰他们

因此,您可以继续执行reset HEAD~1,直到达到I,即在进行任何更改之前的提交。假设在提交后有两次提交。你可以用这个来联系我

git reset HEAD~3
当您的文件被保存时,这可能看起来像

          (F)    
I--Y--C1--C2
↑           
HEAD
I--C1--C2
       ↑
      HEAD
现在,您可以从系统中删除文件,添加同事的文件(到索引中,它已经在文件系统中),然后执行提交。现在,如果没有您的更改,dev行可能看起来像

    (F1) 
 I--C3
    ↑
   HEAD
这不是推荐的方法。推荐的方法是使用

 git revert HEAD^
虽然我从来没有用过,所以说不出来

编辑:另一种方式。
找到提交“Y”的“SHA键”,并在“I”之前提交
可以使用

git log
假设Y键为:7a2ab465aad23dc66a23ade897deb65a5bf9419d
而对于I键是:906488ac2d5a8468d725351df80e3b0f6338c9be
为两个提交创建标记,如

git tag Intercommit -a 906488ac2d5a8468d725351df80e3b0f6338c9be
git tag YourCommit -a  7a2ab465aad23dc66a23ade897deb65a5bf9419d
使用

git checkout Intercommit
然后使用

git rebase --onto HEAD YourCommit master
现在,dev的行将如下所示

          (F)    
I--Y--C1--C2
↑           
HEAD
I--C1--C2
       ↑
      HEAD
您可以找到有关在上重定和重写一个提交的更多信息


为什么不使用
git revert
命令?

您可能需要发布更多关于您的设置的信息,以获得良好的响应。是的,有点含糊不清。在尝试推送新的提交之前,您是否拉合并了同事的提交?当提交被推送到共享回购时,这是正确的方法。“我提交我的提交并将其推送到Git。”。。。听起来我就是这样。