Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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提交头?_Git_Github - Fatal编程技术网

如何删除远程git提交头?

如何删除远程git提交头?,git,github,Git,Github,我用git merge弄乱了很多代码,在这个过程中也丢失了我的工作 我的处境是: 提交A-我首先从远程提取了这个并合并了它 提交B-我按下了合并的提交 提交C-我仍然有一些合并冲突,所以我再次合并并推送 现在,遥控器包含commitCasHEAD。它是完全有缺陷的,而且,我丢失了我的代码。解决这个问题的唯一方法是删除提交B和C。恢复到提交A,然后重新执行该工作 请告诉我是否有一种安全的方法来删除提交B和C,而不破坏其他提交?如果可能,建议其他解决方案 谢谢。您可以签出提交,从中创建一个新分支

我用git merge弄乱了很多代码,在这个过程中也丢失了我的工作

我的处境是:

  • 提交
    A
    -我首先从远程提取了这个并合并了它
  • 提交
    B
    -我按下了合并的提交
  • 提交
    C
    -我仍然有一些合并冲突,所以我再次合并并推送
现在,遥控器包含commit
C
as
HEAD
。它是完全有缺陷的,而且,我丢失了我的代码。解决这个问题的唯一方法是删除提交
B
C
。恢复到提交
A
,然后重新执行该工作

请告诉我是否有一种安全的方法来删除提交
B
C
,而不破坏其他提交?如果可能,建议其他解决方案


谢谢。

您可以签出提交,从中创建一个新分支,然后推动此分支并在将来使用它

基本上,你应该:

  • git checkout A
    您现在将处于分离状态
  • git checkout-b新建分支机构
    根据需要验证您的所有更改
  • git推送原点新分支机构
现在,您可以继续处理这个新的分支

如果需要覆盖较旧的分支本身,则有两个选项

  • 在上面的最后一步中,使用
    • git推送原点新分支:原点上的旧分支
  • 或局部重置分支上的头部并用力推动
    • git checkout old_分行
    • git复位头——硬A
    • git推送原点-f旧分支

上述第二种方法的问题是,如果其他开发人员已经引入您的更改并开始处理这些更改,则由于强制推送,他的机器上的分支历史可能会不同步。

我从以下方面找到了解决方案:

步骤1:为了在本地重置磁头(将A视为提交id)

git重置--很难

步骤2:用于重置遥控器中的磁头

git推送-f原点A:主

完成


现在,我的提交B和C已从远程删除,头部指向A。

我无法将头部重置为提交A,我得到了错误。。无法使用pathsCan进行硬重设签出第一种方法中提到的提交,然后呢?尝试一下,并让我知道在任何情况下完整的错误跟踪