Git 如何将我的项目还原到以前的版本?[简单解释。]

Git 如何将我的项目还原到以前的版本?[简单解释。],git,Git,我正在尝试做一些我认为是基本的事情 我有一个远程存储库(源)和一个本地(主)存储库 我已经做了: 提交/推送2018-12-10 提交/推送2018-12-09 提交/推送2018-12-07 提交/推送2018-12-06 提交/推送2018-12-05 我现在想做的就是让我的本地/和远程分支机构保持他们在的状态:2018-12-07 我在谷歌搜索过这里的每一个角落,但是有太多的答案使用各种各样的术语,我不知道发生了什么。我只想“撤销”已经做过的事情。我该怎么做?我想返回的提交id是:e187

我正在尝试做一些我认为是基本的事情

我有一个远程存储库(源)和一个本地(主)存储库

我已经做了:

提交/推送2018-12-10 提交/推送2018-12-09 提交/推送2018-12-07 提交/推送2018-12-06 提交/推送2018-12-05

我现在想做的就是让我的本地/和远程分支机构保持他们在的状态:2018-12-07

我在谷歌搜索过这里的每一个角落,但是有太多的答案使用各种各样的术语,我不知道发生了什么。我只想“撤销”已经做过的事情。我该怎么做?我想返回的提交id是:e18782b,如果这有区别的话


我已经能够在2018-12-07版本上执行“签出”,因此我的本地文件完全符合我的要求,但它不允许我将其推送到远程,它一直说先运行pull,然后我就回到了开始的位置….

出于所有实际目的,这将摆脱您在e18782b之后所做的操作,假设您已经在本地分支机构工作,您要黑客:

git复位——硬e18782b
git推送原点-f

确保工作树周围没有挂起的更改,因为git reset--hard将清除这些更改。

这将从所有实际目的出发,清除您在e18782b之后所做的更改,假设您已经在处理您要攻击的本地分支:

git复位——硬e18782b
git推送原点-f

确保工作树周围没有悬而未决的更改,因为git reset--hard将消除这些更改。

首先,让我们澄清一些术语和名称:

  • origin
    -远程存储库
  • local
    -本地报告
  • master
    -存储库主分支的默认名称
  • origin/master
    -来自
    origin
    repo的
    master
    分支的本地副本
这里的
master
对于git本身来说并不特殊。但是,您的流程应该特别处理它,并将其作为项目的稳定版本保存。应为继续工作创建其他分支,并仅在工作完成时合并到
master

要回答您的问题,您可以签出要重置的分支,重置它,然后将其推送到
原点

git checkout master
git reset --hard e18782b
git push -f

您可以用适当的分支名称替换
master
。请注意,这将放弃过去的所有提交
e18782b
,因此请确保您确实不希望进行这些更改。此外,它还将丢弃所有尚未提交的本地更改。您丢弃的提交只需稍加努力即可恢复,但未提交的本地更改无法使用git恢复。

首先,让我们澄清一些术语和名称:

  • origin
    -远程存储库
  • local
    -本地报告
  • master
    -存储库主分支的默认名称
  • origin/master
    -来自
    origin
    repo的
    master
    分支的本地副本
这里的
master
对于git本身来说并不特殊。但是,您的流程应该特别处理它,并将其作为项目的稳定版本保存。应为继续工作创建其他分支,并仅在工作完成时合并到
master

要回答您的问题,您可以签出要重置的分支,重置它,然后将其推送到
原点

git checkout master
git reset --hard e18782b
git push -f

您可以用适当的分支名称替换
master
。请注意,这将放弃过去的所有提交
e18782b
,因此请确保您确实不希望进行这些更改。此外,它还将丢弃所有尚未提交的本地更改。您扔掉的提交只需做一点工作就可以恢复,但未提交的本地更改无法用git恢复。

Ok这似乎就可以了。谢谢你提供的额外信息。就我的理解而言,既然orgin/master应该与local/master同步,那么如果在local中有许多分支,会发生什么呢?比如说本地/主本地/功能一,本地/功能二,这些都不会存在于origin上,对吗?起源永远只有起源/大师?@Amir 1
origin/master
将仅自上次执行
git fetch
git pull
后同步。2.如果您执行
git-push
,本地分支将仅位于origin上。好的,这似乎起到了作用。谢谢你提供的额外信息。就我的理解而言,既然orgin/master应该与local/master同步,那么如果在local中有许多分支,会发生什么呢?比如说本地/主本地/功能一,本地/功能二,这些都不会存在于origin上,对吗?起源永远只有起源/大师?@Amir 1
origin/master
将仅自上次执行
git fetch
git pull
后同步。2.如果您执行
git推送
,则本地分支将仅位于原点。