Git 如何将我的项目还原到以前的版本?[简单解释。]
我正在尝试做一些我认为是基本的事情 我有一个远程存储库(源)和一个本地(主)存储库 我已经做了: 提交/推送2018-12-10 提交/推送2018-12-09 提交/推送2018-12-07 提交/推送2018-12-06 提交/推送2018-12-05 我现在想做的就是让我的本地/和远程分支机构保持他们在的状态:2018-12-07 我在谷歌搜索过这里的每一个角落,但是有太多的答案使用各种各样的术语,我不知道发生了什么。我只想“撤销”已经做过的事情。我该怎么做?我想返回的提交id是:e18782b,如果这有区别的话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-07版本上执行“签出”,因此我的本地文件完全符合我的要求,但它不允许我将其推送到远程,它一直说先运行pull,然后我就回到了开始的位置….出于所有实际目的,这将摆脱您在e18782b之后所做的操作,假设您已经在本地分支机构工作,您要黑客:
git复位——硬e18782b
git推送原点-f
确保工作树周围没有挂起的更改,因为git reset--hard将清除这些更改。这将从所有实际目的出发,清除您在e18782b之后所做的更改,假设您已经在处理您要攻击的本地分支:
git复位——硬e18782b
git推送原点-f
确保工作树周围没有悬而未决的更改,因为git reset--hard将消除这些更改。首先,让我们澄清一些术语和名称:
-远程存储库origin
-本地报告local
-存储库主分支的默认名称master
-来自origin/master
repo的origin
分支的本地副本master
master
对于git本身来说并不特殊。但是,您的流程应该特别处理它,并将其作为项目的稳定版本保存。应为继续工作创建其他分支,并仅在工作完成时合并到master
要回答您的问题,您可以签出要重置的分支,重置它,然后将其推送到原点
:
git checkout master
git reset --hard e18782b
git push -f
您可以用适当的分支名称替换
master
。请注意,这将放弃过去的所有提交e18782b
,因此请确保您确实不希望进行这些更改。此外,它还将丢弃所有尚未提交的本地更改。您丢弃的提交只需稍加努力即可恢复,但未提交的本地更改无法使用git恢复。首先,让我们澄清一些术语和名称:
-远程存储库origin
-本地报告local
-存储库主分支的默认名称master
-来自origin/master
repo的origin
分支的本地副本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 1origin/master
将仅自上次执行git fetch
或git pull
后同步。2.如果您执行git-push
,本地分支将仅位于origin上。好的,这似乎起到了作用。谢谢你提供的额外信息。就我的理解而言,既然orgin/master应该与local/master同步,那么如果在local中有许多分支,会发生什么呢?比如说本地/主本地/功能一,本地/功能二,这些都不会存在于origin上,对吗?起源永远只有起源/大师?@Amir 1origin/master
将仅自上次执行git fetch
或git pull
后同步。2.如果您执行git推送
,则本地分支将仅位于原点。