首页 > 编程知识 正文

git回滚到上一个版本,git拉取指定版本的代码

时间:2023-05-04 02:40:12 阅读:17361 作者:2996

要将git代码回滚到以前的commit,主要有两个步骤。 首先,将本地代码分支回滚到指定版本或tag标记的提交id,然后将回滚到本地的代码推送到远程仓库,以将远程分支回滚到其历史版本。 本地代码回滚使用git reset命令,远程仓库使用git push命令。

git reset命令

本地代码回滚主要以git reset命令为中心,将版本库和工作目录更改为已知状态。 更具体地说,git reset将调整头部引用以指向指定的提交,缺省情况下索引也会更新以匹配该提交。 如果需要,git reset命令还可以修改工作目录以显示指定发件人的项目修订。

git reset命令有三个主要选项: `--soft `、`--混合`、`--hard `。

软件提交

--soft将HEAD引用指向指定的提交。 索引和工作目录的内容保持不变。 此版本的命令受“最小”影响,并且仅更改一个符号参照的状态以指向新的提交。

混合提交

- -混合指向指定HEAD的提交。 索引内容也将更改以适应指定提交的树结构,但工作目录的内容不会更改。 此版本的命令将索引设置为临时保存提交的所有更改时的状态。 这将显示工作目录中是否有更改。 - -混合是git reset的默认模式。

hard提交

此命令将HEAD引用指向指定的提交。 索引内容也会更改,以匹配指定提交的树结构。 此外,工作目录的内容也会发生更改,以反映指定提交显示的树的状态。 更改工作目录时,整个目录结构将更改为与指定的提交相对应。 您所做的任何修改都将丢失,新文件将被删除。 恢复指定提交但不在工作目录中的文件。

git reset选项的影响

选项

头戴

索引

工作目录

--soft

- -混合

--hard

本地代码回滚

首先,使用git log查找要回退的提交标志(commit id )。 此命令显示距离最近的最远的提交日志

$ git log

或者,以下选项仅显示提交的commit id和相应的注释:

$ git log --pretty=oneline

36915978 c 5b7 E6 cf 4364 b0b 778409 ba 375 e 14289 alljarchangetorelease

3989905 AE 07 a 92741 cfedb 0391544666 df 45885 deljacoco

.

然后回滚到git reset指定的commit id

$ git reset --hard

硬件选项。 表示将工作区、暂存区和版本库的记录完全恢复到指定的版本库。

回滚远程仓库代码

要将本地回滚代码推送到远程仓库,请使用增强选项`-f `或`--force `;

$ git push -f origin

如果将本地回滚代码强制推送至远程仓库,则对于主分支操作,很可能会提示您没有权限强制推送,如下所示:

git@macbook-proXXX-xx(master ) $ git PS定向头--force

总值delta0),reused0(delta0) )。

远程: git lab : youarenotallowedtoforcepushcodetoaprotectedbranchonthisproject。

to http://git lab.XXX.com/xxxx/XXX-xx.git

! [ remote rejected ] head-master (预接收hookdeclined )

error : failedtopushsomerefsto ' http://git lab.XXX.com/xxxx/XXX-xx.git '

以gitlab为例,常见的主分支被设置为保护分支,不允许推式- -力。 必须在下图中操作。

如上面的红圈示例所示,解禁单击路径是repository-protected branches-unprotect,解禁后可以使用强制推送操作。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。