Git:如何撤销已经提交的代码 您所在的位置:网站首页 房产过户资料都提交了就剩交税了可以撤销吗 Git:如何撤销已经提交的代码

Git:如何撤销已经提交的代码

2023-07-19 12:31| 来源: 网络整理| 查看: 265

日常操作流程 本地工作区(尚未暂存) ---> add . 到暂存区 ---> commit 到本地仓库 ---> pull拉取关联远程仓库分支合并到本地的分支---> push 到远程分支

查看commit提交的内容 git log #查看commitId的log git show #查看最新的commit git show commitId #查看指定commit c440aa10ac的所有修改: 场景一:

修改的文件已被git commit,再次修改的文件,合并到上一次提交的commit中,不再产生新的Commit

# 修改最后一次提交 git add sample.txt #修改文件添加到暂存区 git commit --amend -m"说明" #合并提交到上一次的commit里 git commit --amend #或者 进入到编辑里编写提交注释 修改上一次commit提交的备注

git commit --amend

场景二:

当修改文件后,还没有add提交到暂存区,也没有commit时,想要放弃修改

git checkout 11.txt #放弃11.txt文件的修改 git checkout . # 放弃所有文件的修改

git checkout – . 丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然,如果你之前压根都没有暂存或commit,那就是回到你上次pull下来的样子了。

场景三:

当文件add提交到暂存区,还没有commit时,发现文件提交错了,这时想撤回文件

git reset HEAD a.php #只撤消a.php git reset HEAD * #撤消所有

这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化

场景四:

当文件add提交到暂存区,也commit了,发现文件提交错了,这时想撤回文件

git reset HEAD^ # 撤消上一次的commit 不带参数默认是--mixed 例:git reset --mixed HEAD^ 也可以写成git reset HEAD~1 git reset HEAD~2 如果你进行了2次commit,想都撤回,可以使用HEAD~2 git reset fdaeaf208f0e142ceba5766d17786d60fcebc1dd #撤消指定的commitId git reset --hard fdaeaf208f0e1 # 回退到指定版本 放弃工作区的所有修改,还原到指定版本的代码

reset三种模式区别

--soft:不删除工作空间改动代码,撤销commit,不撤销git add .操作,重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。 --mixed(默认):不删除工作空间改动代码,撤销commit,并且撤销git add . 操作,重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。 --hard:删除工作空间改动代码,撤销commit,撤销git add . 操作,重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。 注意完成这个操作后,就恢复到了指定版本的commit状态。 push到远程仓库

如果代码之前已经push到远程仓库里,想要撤消线上的push

步骤:先回退本地版本,再强推到远程仓库里,有两种方法

方法:

reset(回滚到) revert(重做)

区别:

reset是指将HEAD指针指到先前已存在的历史提交,历史记录中不会出现放弃的提交记录。 revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;

reset(回滚到)

git reset --hard fdaeaf208f0e1 # 回退到指定版本 放弃工作区的所有修改,还原到指定版本的代码 git push 目标分支 本地分支 -f

此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧,要加-f参数强制推送

#git push 目标分支 本地分支 -f git push origin master -f

revert(重做)

参考下面的文档: https://www.cnblogs.com/birdy-silhouette/p/13958151.html

或者在IDEA中操作:

选soft 或者 mixed 都可以,这个你本地开发的代码不会丢失。

查看代码已经撤回了

4.git push 重新提交会报错;

把撤回的状态推送到线上仓库里,因为此时只是在本地撤回代码了,还没有同步到线上 这是因为撤回后,本地仓库里的版本小到线上仓库的,所以被拒绝 下面强推一下就可以了

git push origin master -f

5.使用git push --force 执行完上面的命令后,线上仓库里的提交就被撤回了。 然后,自己在本地再修改代码,测试好了,再重提交代码

add . add commit -m"edit code" add pull add push

转载于:https://blog.csdn.net/weixin_38750084/article/details/103164813?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight 转载于:https://www.cnblogs.com/yalong/p/9889844.html

更多参考: https://blog.csdn.net/asoar/article/details/84111841



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有