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-如何恢复已推送到远程分支(而不是源分支)的重基_Git_Git Rebase - Fatal编程技术网

Git-如何恢复已推送到远程分支(而不是源分支)的重基

Git-如何恢复已推送到远程分支(而不是源分支)的重基,git,git-rebase,Git,Git Rebase,我正在我当地的分支机构做一些修改,当我完成时,我把一切都推到了远程分支机构。在将这个分支与develope合并之前,我认为我应该做一个重基,因为其他人已经在那里合并了很多代码。当我重新设置基础并解决一些冲突时,我将其推到远程分支。不幸的是,我解决冲突的方法是错误的,所以现在我需要在重新基础发生之前返回,并将远程分支更新为新状态 我尝试的 重置头部 git reset——硬头@{x}//其中x是重基之前的头 这可以工作并恢复本地分支上的更改,但是我不知道如何使远程分支更新到该分支,因为它不会创建可

我正在我当地的分支机构做一些修改,当我完成时,我把一切都推到了远程分支机构。在将这个分支与develope合并之前,我认为我应该做一个重基,因为其他人已经在那里合并了很多代码。当我重新设置基础并解决一些冲突时,我将其推到远程分支。不幸的是,我解决冲突的方法是错误的,所以现在我需要在重新基础发生之前返回,并将远程分支更新为新状态

我尝试的

  • 重置头部

    git reset——硬头@{x}//其中x是重基之前的头


  • 这可以工作并恢复本地分支上的更改,但是我不知道如何使远程分支更新到该分支,因为它不会创建可以推送到远程分支的新提交

    您不应该重写远程存储库的历史记录,因为如果

  • 你推坏了什么东西
  • 有人拉
  • 你强迫推一个不同的历史
  • 不仅你会面临必须修复混乱局面的问题,还有其他所有做出改变的人的问题。所以除非你能确定没有人拉它,否则不要用力推

    相反,您应该使用

    >> git revert HEAD@{y}   # where HEAD@{y} is the faulty commit
    
    在合并的情况下,如果只有一个提交是混乱的

    在将多个提交传输到主分支的重基情况下,您需要执行以下操作

    >> git revert --no-commit HEAD
    >> git revert --no-commit HEAD~1
    >> git revert --no-commit HEAD~2
       ...
    >> git revert --no-commit HEAD@{x}
    >> git commit -m "Sorry folks for the big mess I made"
    
    其中所有
    HEAD~y
    都是介于
    HEAD@{x}
    HEAD
    之间的提交


    这将在一次大提交中有效地撤消所有受影响的提交。

    在push命令中使用“-f”标志。您可以使用
    git reflog
    在错误的重基和
    git reset--hard
    之前查找提交的哈希值。使用-force推送结果。谢谢,它像一个符咒一样工作!另外,你是对的,我不应该强行拉。