目前大家都在使用 git ,在项目开发中,总会遇到提交的代码有问题,想要撤销回滚的操作,关于撤销回滚代码单独给大家介绍一下。 正常的提交代码如果要提交到远程仓库有下边3步命令:
git
git add . ------------> git commit -m 说明 -------------> git push (添加到暂存区) (提交到本地仓库) (推送到远程仓库) 在git里,撤销代码的命令主要为git reset,但是有git reset --soft、git reset --hard、git reset --mixed3种模式。这三种命令主要是针对已提交仓库之后的代码的回滚,基本后边都是要带上提交日志版本号回滚的。3种模式代表的不同含义如下: --soft:该命令表示撤销代码到暂存区之后,commit之前,代码在本地不会改变。 --mixed:该命令表示撤销代码到暂存区和commit之前,代码在本地不会改变。 --hard:该命令表示回退代码到某个版本下,代码在本地会改变到指定版本下,谨慎操作。 下边要说的内容,简单如下图所示: 再次强调:--hard命令,在使用时千万注意,带上它会把代码直接回滚没了。就算是本地新写的都给清掉了。 2. 不同模式下的撤销 下边围绕上边的提交步骤和撤销的模式分别解释下撤销后的现象。在说撤销之前,先熟悉两个命令git status、git log。 首先git status通过这个命令,能够看到当前代码在哪个分支下、工作区的代码情况。 如上图,在代码工作区中输入git status之后,能够看到当前代码处在v1.0分支下,当前工作区中有1个文件5.txt还没有提交到暂存区。 git log命令是查看的代码提交的记录,能够看到提交信息及版本号(SHA码)。如下图: 当然我这篇讲的命令执行位置,都是需要在git项目工作空间里执行,一般都是在项目根路径下执行。 代码撤销这块,我主要想到有下边这几种撤销,提交暂存区的撤销(add撤销)、提交本地仓库撤销(commit撤销)、推送远程仓库撤销(git push之后的撤销)。具体如下: 2.1 add撤销 当代码通过git add .提交到暂存区,如果想要从暂存区撤回来,主要有以下几个方法。 2.1.1 git reset撤销 如果想将提交到暂存区的代码,直接撤回来,最方便的是输入git reset命令。该命令或者输入git reset HEAD效果一样。此步骤会将代码撤销到执行git add .前的状态,如下图所示: 2.1.2 git restore撤销 当然还有一个命令是git推荐的,但是感觉不如git reset方便。即上面图中绿色文字上边的一行里,git restore --staged命令。 git restore --staged . git restore --staged 文件名 2.1.3 git reset --mixed撤销 &emsp;最前边说了撤销的三种模式,其中--mixed模式,如果想撤销刚提交到暂存区的代码,也可以如下操作: git reset --mixed 但是那三种模式--soft、--mixed、--hard主要用来基于已commit的代码版本号回滚代码的,用在这里有点大材小用。另外只有--mixed可以不用写版本号完成撤销操作,其他两个不写版本号(除了用HEAD^)都无效果。 提个问题:使用--soft能够回退git add .前的代码吗?使用--hard可以回滚吗?另外回滚会有什么现象? 2.2 commit撤销 当代码经过git commit -m 备注说明提交本地仓库之后,想要代码回滚,有以下几种方法来回退不同状态的代码。主要使用--soft、--mixed模式。关于后边追加版本号的方法,下边只在--soft模式下介绍。 2.2.1 撤销到暂存区 只是将代码撤销到暂存区之后,还未添加到本地仓库的话,只能使用--soft模式。使用该模式需要加版本号,写法主要有以下几种。 2.2.1.1 git reset --soft HEAD^写法 HEAD^表示撤销到上一个版本号,其中一个^表示上一次,^^表示上上次,以此类推。另外,需要注意,非windows系统下正常输入git reset --soft HEAD^,即可将代码撤销到git add .之后的状态(暂存区状态)。但是windows系统下需要输入git reset --soft HEAD^^才可以。 这是因为在windows系统下cmd控制台中换行符默认是^,而不是\ ,如果输入少了,会提示more?,意思是问你下一行是否需要再输入,而^符号就被当做换行符而被git命令忽略掉了。 因此,如果在windows下是撤销2次commit,需要输入4个^才可以。 解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次, 拼接多个就会撤销多个。 2.2.1.2 git reset --soft HEAD~写法 git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。 2.2.1.3 git reset --soft 版本号写法 如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。 也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况: D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
git add . ------------> git commit -m 说明 -------------> git push (添加到暂存区) (提交到本地仓库) (推送到远程仓库) 在git里,撤销代码的命令主要为git reset,但是有git reset --soft、git reset --hard、git reset --mixed3种模式。这三种命令主要是针对已提交仓库之后的代码的回滚,基本后边都是要带上提交日志版本号回滚的。3种模式代表的不同含义如下: --soft:该命令表示撤销代码到暂存区之后,commit之前,代码在本地不会改变。 --mixed:该命令表示撤销代码到暂存区和commit之前,代码在本地不会改变。 --hard:该命令表示回退代码到某个版本下,代码在本地会改变到指定版本下,谨慎操作。 下边要说的内容,简单如下图所示: 再次强调:--hard命令,在使用时千万注意,带上它会把代码直接回滚没了。就算是本地新写的都给清掉了。
在git里,撤销代码的命令主要为git reset,但是有git reset --soft、git reset --hard、git reset --mixed3种模式。这三种命令主要是针对已提交仓库之后的代码的回滚,基本后边都是要带上提交日志版本号回滚的。3种模式代表的不同含义如下:
git reset
git reset --soft
git reset --hard
git reset --mixed
--soft:该命令表示撤销代码到暂存区之后,commit之前,代码在本地不会改变。
--soft
commit
--mixed:该命令表示撤销代码到暂存区和commit之前,代码在本地不会改变。
--mixed
--hard:该命令表示回退代码到某个版本下,代码在本地会改变到指定版本下,谨慎操作。 下边要说的内容,简单如下图所示:
--hard
再次强调:--hard命令,在使用时千万注意,带上它会把代码直接回滚没了。就算是本地新写的都给清掉了。
2. 不同模式下的撤销 下边围绕上边的提交步骤和撤销的模式分别解释下撤销后的现象。在说撤销之前,先熟悉两个命令git status、git log。 首先git status通过这个命令,能够看到当前代码在哪个分支下、工作区的代码情况。 如上图,在代码工作区中输入git status之后,能够看到当前代码处在v1.0分支下,当前工作区中有1个文件5.txt还没有提交到暂存区。 git log命令是查看的代码提交的记录,能够看到提交信息及版本号(SHA码)。如下图: 当然我这篇讲的命令执行位置,都是需要在git项目工作空间里执行,一般都是在项目根路径下执行。 代码撤销这块,我主要想到有下边这几种撤销,提交暂存区的撤销(add撤销)、提交本地仓库撤销(commit撤销)、推送远程仓库撤销(git push之后的撤销)。具体如下: 2.1 add撤销 当代码通过git add .提交到暂存区,如果想要从暂存区撤回来,主要有以下几个方法。 2.1.1 git reset撤销 如果想将提交到暂存区的代码,直接撤回来,最方便的是输入git reset命令。该命令或者输入git reset HEAD效果一样。此步骤会将代码撤销到执行git add .前的状态,如下图所示: 2.1.2 git restore撤销 当然还有一个命令是git推荐的,但是感觉不如git reset方便。即上面图中绿色文字上边的一行里,git restore --staged命令。 git restore --staged . git restore --staged 文件名 2.1.3 git reset --mixed撤销 &emsp;最前边说了撤销的三种模式,其中--mixed模式,如果想撤销刚提交到暂存区的代码,也可以如下操作: git reset --mixed 但是那三种模式--soft、--mixed、--hard主要用来基于已commit的代码版本号回滚代码的,用在这里有点大材小用。另外只有--mixed可以不用写版本号完成撤销操作,其他两个不写版本号(除了用HEAD^)都无效果。 提个问题:使用--soft能够回退git add .前的代码吗?使用--hard可以回滚吗?另外回滚会有什么现象? 2.2 commit撤销 当代码经过git commit -m 备注说明提交本地仓库之后,想要代码回滚,有以下几种方法来回退不同状态的代码。主要使用--soft、--mixed模式。关于后边追加版本号的方法,下边只在--soft模式下介绍。 2.2.1 撤销到暂存区 只是将代码撤销到暂存区之后,还未添加到本地仓库的话,只能使用--soft模式。使用该模式需要加版本号,写法主要有以下几种。 2.2.1.1 git reset --soft HEAD^写法 HEAD^表示撤销到上一个版本号,其中一个^表示上一次,^^表示上上次,以此类推。另外,需要注意,非windows系统下正常输入git reset --soft HEAD^,即可将代码撤销到git add .之后的状态(暂存区状态)。但是windows系统下需要输入git reset --soft HEAD^^才可以。 这是因为在windows系统下cmd控制台中换行符默认是^,而不是\ ,如果输入少了,会提示more?,意思是问你下一行是否需要再输入,而^符号就被当做换行符而被git命令忽略掉了。 因此,如果在windows下是撤销2次commit,需要输入4个^才可以。 解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次, 拼接多个就会撤销多个。 2.2.1.2 git reset --soft HEAD~写法 git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。 2.2.1.3 git reset --soft 版本号写法 如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。 也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况: D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
下边围绕上边的提交步骤和撤销的模式分别解释下撤销后的现象。在说撤销之前,先熟悉两个命令git status、git log。 首先git status通过这个命令,能够看到当前代码在哪个分支下、工作区的代码情况。 如上图,在代码工作区中输入git status之后,能够看到当前代码处在v1.0分支下,当前工作区中有1个文件5.txt还没有提交到暂存区。 git log命令是查看的代码提交的记录,能够看到提交信息及版本号(SHA码)。如下图: 当然我这篇讲的命令执行位置,都是需要在git项目工作空间里执行,一般都是在项目根路径下执行。 代码撤销这块,我主要想到有下边这几种撤销,提交暂存区的撤销(add撤销)、提交本地仓库撤销(commit撤销)、推送远程仓库撤销(git push之后的撤销)。具体如下:
git status
git log
v1.0
5.txt
提交暂存区的撤销(add撤销)
提交本地仓库撤销(commit撤销)
推送远程仓库撤销(git push之后的撤销)
当代码通过git add .提交到暂存区,如果想要从暂存区撤回来,主要有以下几个方法。
git add .
如果想将提交到暂存区的代码,直接撤回来,最方便的是输入git reset命令。该命令或者输入git reset HEAD效果一样。此步骤会将代码撤销到执行git add .前的状态,如下图所示:
git reset HEAD
git restore
当然还有一个命令是git推荐的,但是感觉不如git reset方便。即上面图中绿色文字上边的一行里,git restore --staged命令。
git restore --staged
git restore --staged . git restore --staged 文件名 2.1.3 git reset --mixed撤销 &emsp;最前边说了撤销的三种模式,其中--mixed模式,如果想撤销刚提交到暂存区的代码,也可以如下操作: git reset --mixed 但是那三种模式--soft、--mixed、--hard主要用来基于已commit的代码版本号回滚代码的,用在这里有点大材小用。另外只有--mixed可以不用写版本号完成撤销操作,其他两个不写版本号(除了用HEAD^)都无效果。 提个问题:使用--soft能够回退git add .前的代码吗?使用--hard可以回滚吗?另外回滚会有什么现象? 2.2 commit撤销 当代码经过git commit -m 备注说明提交本地仓库之后,想要代码回滚,有以下几种方法来回退不同状态的代码。主要使用--soft、--mixed模式。关于后边追加版本号的方法,下边只在--soft模式下介绍。 2.2.1 撤销到暂存区 只是将代码撤销到暂存区之后,还未添加到本地仓库的话,只能使用--soft模式。使用该模式需要加版本号,写法主要有以下几种。 2.2.1.1 git reset --soft HEAD^写法 HEAD^表示撤销到上一个版本号,其中一个^表示上一次,^^表示上上次,以此类推。另外,需要注意,非windows系统下正常输入git reset --soft HEAD^,即可将代码撤销到git add .之后的状态(暂存区状态)。但是windows系统下需要输入git reset --soft HEAD^^才可以。 这是因为在windows系统下cmd控制台中换行符默认是^,而不是\ ,如果输入少了,会提示more?,意思是问你下一行是否需要再输入,而^符号就被当做换行符而被git命令忽略掉了。 因此,如果在windows下是撤销2次commit,需要输入4个^才可以。 解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次, 拼接多个就会撤销多个。 2.2.1.2 git reset --soft HEAD~写法 git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。 2.2.1.3 git reset --soft 版本号写法 如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。 也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况: D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
git restore --staged .
git restore --staged 文件名 2.1.3 git reset --mixed撤销 &emsp;最前边说了撤销的三种模式,其中--mixed模式,如果想撤销刚提交到暂存区的代码,也可以如下操作: git reset --mixed 但是那三种模式--soft、--mixed、--hard主要用来基于已commit的代码版本号回滚代码的,用在这里有点大材小用。另外只有--mixed可以不用写版本号完成撤销操作,其他两个不写版本号(除了用HEAD^)都无效果。 提个问题:使用--soft能够回退git add .前的代码吗?使用--hard可以回滚吗?另外回滚会有什么现象? 2.2 commit撤销 当代码经过git commit -m 备注说明提交本地仓库之后,想要代码回滚,有以下几种方法来回退不同状态的代码。主要使用--soft、--mixed模式。关于后边追加版本号的方法,下边只在--soft模式下介绍。 2.2.1 撤销到暂存区 只是将代码撤销到暂存区之后,还未添加到本地仓库的话,只能使用--soft模式。使用该模式需要加版本号,写法主要有以下几种。 2.2.1.1 git reset --soft HEAD^写法 HEAD^表示撤销到上一个版本号,其中一个^表示上一次,^^表示上上次,以此类推。另外,需要注意,非windows系统下正常输入git reset --soft HEAD^,即可将代码撤销到git add .之后的状态(暂存区状态)。但是windows系统下需要输入git reset --soft HEAD^^才可以。 这是因为在windows系统下cmd控制台中换行符默认是^,而不是\ ,如果输入少了,会提示more?,意思是问你下一行是否需要再输入,而^符号就被当做换行符而被git命令忽略掉了。 因此,如果在windows下是撤销2次commit,需要输入4个^才可以。 解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次, 拼接多个就会撤销多个。 2.2.1.2 git reset --soft HEAD~写法 git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。 2.2.1.3 git reset --soft 版本号写法 如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。 也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况: D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
git restore --staged 文件名
2.1.3 git reset --mixed撤销 &emsp;最前边说了撤销的三种模式,其中--mixed模式,如果想撤销刚提交到暂存区的代码,也可以如下操作: git reset --mixed 但是那三种模式--soft、--mixed、--hard主要用来基于已commit的代码版本号回滚代码的,用在这里有点大材小用。另外只有--mixed可以不用写版本号完成撤销操作,其他两个不写版本号(除了用HEAD^)都无效果。 提个问题:使用--soft能够回退git add .前的代码吗?使用--hard可以回滚吗?另外回滚会有什么现象? 2.2 commit撤销 当代码经过git commit -m 备注说明提交本地仓库之后,想要代码回滚,有以下几种方法来回退不同状态的代码。主要使用--soft、--mixed模式。关于后边追加版本号的方法,下边只在--soft模式下介绍。 2.2.1 撤销到暂存区 只是将代码撤销到暂存区之后,还未添加到本地仓库的话,只能使用--soft模式。使用该模式需要加版本号,写法主要有以下几种。 2.2.1.1 git reset --soft HEAD^写法 HEAD^表示撤销到上一个版本号,其中一个^表示上一次,^^表示上上次,以此类推。另外,需要注意,非windows系统下正常输入git reset --soft HEAD^,即可将代码撤销到git add .之后的状态(暂存区状态)。但是windows系统下需要输入git reset --soft HEAD^^才可以。 这是因为在windows系统下cmd控制台中换行符默认是^,而不是\ ,如果输入少了,会提示more?,意思是问你下一行是否需要再输入,而^符号就被当做换行符而被git命令忽略掉了。 因此,如果在windows下是撤销2次commit,需要输入4个^才可以。 解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次, 拼接多个就会撤销多个。 2.2.1.2 git reset --soft HEAD~写法 git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。 2.2.1.3 git reset --soft 版本号写法 如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。 也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况: D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
&emsp;最前边说了撤销的三种模式,其中--mixed模式,如果想撤销刚提交到暂存区的代码,也可以如下操作:
git reset --mixed 但是那三种模式--soft、--mixed、--hard主要用来基于已commit的代码版本号回滚代码的,用在这里有点大材小用。另外只有--mixed可以不用写版本号完成撤销操作,其他两个不写版本号(除了用HEAD^)都无效果。 提个问题:使用--soft能够回退git add .前的代码吗?使用--hard可以回滚吗?另外回滚会有什么现象? 2.2 commit撤销 当代码经过git commit -m 备注说明提交本地仓库之后,想要代码回滚,有以下几种方法来回退不同状态的代码。主要使用--soft、--mixed模式。关于后边追加版本号的方法,下边只在--soft模式下介绍。 2.2.1 撤销到暂存区 只是将代码撤销到暂存区之后,还未添加到本地仓库的话,只能使用--soft模式。使用该模式需要加版本号,写法主要有以下几种。 2.2.1.1 git reset --soft HEAD^写法 HEAD^表示撤销到上一个版本号,其中一个^表示上一次,^^表示上上次,以此类推。另外,需要注意,非windows系统下正常输入git reset --soft HEAD^,即可将代码撤销到git add .之后的状态(暂存区状态)。但是windows系统下需要输入git reset --soft HEAD^^才可以。 这是因为在windows系统下cmd控制台中换行符默认是^,而不是\ ,如果输入少了,会提示more?,意思是问你下一行是否需要再输入,而^符号就被当做换行符而被git命令忽略掉了。 因此,如果在windows下是撤销2次commit,需要输入4个^才可以。 解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次, 拼接多个就会撤销多个。 2.2.1.2 git reset --soft HEAD~写法 git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。 2.2.1.3 git reset --soft 版本号写法 如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。 也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况: D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
git reset --mixed 但是那三种模式--soft、--mixed、--hard主要用来基于已commit的代码版本号回滚代码的,用在这里有点大材小用。另外只有--mixed可以不用写版本号完成撤销操作,其他两个不写版本号(除了用HEAD^)都无效果。 提个问题:使用--soft能够回退git add .前的代码吗?使用--hard可以回滚吗?另外回滚会有什么现象?
但是那三种模式--soft、--mixed、--hard主要用来基于已commit的代码版本号回滚代码的,用在这里有点大材小用。另外只有--mixed可以不用写版本号完成撤销操作,其他两个不写版本号(除了用HEAD^)都无效果。 提个问题:使用--soft能够回退git add .前的代码吗?使用--hard可以回滚吗?另外回滚会有什么现象?
2.2 commit撤销 当代码经过git commit -m 备注说明提交本地仓库之后,想要代码回滚,有以下几种方法来回退不同状态的代码。主要使用--soft、--mixed模式。关于后边追加版本号的方法,下边只在--soft模式下介绍。 2.2.1 撤销到暂存区 只是将代码撤销到暂存区之后,还未添加到本地仓库的话,只能使用--soft模式。使用该模式需要加版本号,写法主要有以下几种。 2.2.1.1 git reset --soft HEAD^写法 HEAD^表示撤销到上一个版本号,其中一个^表示上一次,^^表示上上次,以此类推。另外,需要注意,非windows系统下正常输入git reset --soft HEAD^,即可将代码撤销到git add .之后的状态(暂存区状态)。但是windows系统下需要输入git reset --soft HEAD^^才可以。 这是因为在windows系统下cmd控制台中换行符默认是^,而不是\ ,如果输入少了,会提示more?,意思是问你下一行是否需要再输入,而^符号就被当做换行符而被git命令忽略掉了。 因此,如果在windows下是撤销2次commit,需要输入4个^才可以。 解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次, 拼接多个就会撤销多个。 2.2.1.2 git reset --soft HEAD~写法 git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。 2.2.1.3 git reset --soft 版本号写法 如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。 也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况: D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
当代码经过git commit -m 备注说明提交本地仓库之后,想要代码回滚,有以下几种方法来回退不同状态的代码。主要使用--soft、--mixed模式。关于后边追加版本号的方法,下边只在--soft模式下介绍。
git commit -m 备注说明
只是将代码撤销到暂存区之后,还未添加到本地仓库的话,只能使用--soft模式。使用该模式需要加版本号,写法主要有以下几种。
git reset --soft HEAD^
HEAD^表示撤销到上一个版本号,其中一个^表示上一次,^^表示上上次,以此类推。另外,需要注意,非windows系统下正常输入git reset --soft HEAD^,即可将代码撤销到git add .之后的状态(暂存区状态)。但是windows系统下需要输入git reset --soft HEAD^^才可以。
HEAD^
^
^^
windows
git reset --soft HEAD^^
这是因为在windows系统下cmd控制台中换行符默认是^,而不是\ ,如果输入少了,会提示more?,意思是问你下一行是否需要再输入,而^符号就被当做换行符而被git命令忽略掉了。
\
因此,如果在windows下是撤销2次commit,需要输入4个^才可以。
解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次, 拼接多个就会撤销多个。 2.2.1.2 git reset --soft HEAD~写法 git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。 2.2.1.3 git reset --soft 版本号写法 如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。 也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况: D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次, 拼接多个就会撤销多个。
2.2.1.2 git reset --soft HEAD~写法 git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。 2.2.1.3 git reset --soft 版本号写法 如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。 也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况: D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
git reset --soft HEAD~
git reset --soft HEAD~1命令,其中1表示撤销上一次提交,如果是再前一次~2即可。 此命令不分windows系统和非windows的问题,可以优先使用这个。
git reset --soft HEAD~1
1
~2
git reset --soft 版本号
如果想撤销的版本在很久之前,无法用数字或多个^来锁定,这种情况下,可以通过使用git log查看历次提交记录,然后根据版本号来撤销,git reset --soft 版本号。
也可以看自己需要使用--mixed 、--hard(谨慎)来回退不同模式的代码。 如下图所示,是查看的日志情况:
D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
D:\workspaces\testproject>git log commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:16:53 2023 +0800 提交9文件 commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 20:04:43 2023 +0800 提交8文件 commit 9e10843e96f7cd5a138f405231f06c61e83c4429 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件 commit 05fd4925cf0e4341a404d5c5596470d6053d7319 Author: lingsf <944916889@qq.com> Date: Tue Jan 3 16:40:48 2023 +0800 回退到提交7文件这一版本: D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429 D:\workspaces\testproject>git log commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master) Author: lingsf <944916889@qq.com> Date: Tue Jan 3 19:48:54 2023 +0800 提交7文件
回退到提交7文件这一版本:
提交7文件
2.2.2 撤销到暂存区之前 — git reset --mixed 假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。 2.3 commit之后修改注释 其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图: 当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。 2.4 已推送远程仓库后的撤销 推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。 3. 实际操作 3.1 场景一:线上分支被覆盖,加了新的功能。 有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。 3.1.1 拉出新的临时分支 先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。 3.1.2 通过提交记录找到回滚位置 基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。 3.1.3 基于--hard回退代码 基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。 3.2 场景二:本地代码已经写了部分功能,但是还没有提交 本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。 3.2.1 基于现在代码新拉分支 代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。 3.2.2 切回原来的分支 当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。 4. 总结 代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支( git push origin my-new-feature ) 创建一个新的拉取请求 1.Git add之前 撤回 git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改 2.撤回 Git add git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件 3.撤回 Git commit 撤回到上一个commit,保留修改的内容 git reset HEAD^ 这里写自定义目录标题git撤销操作撤销本地(工作区)修改git checkout回滚版本git reset撤销版本提交git revert git撤销操作 撤销本地(工作区)修改git checkout git checkout [文件名] git的撤销与回滚 转载文章https://www.cnblogs.com/songgj/p/8965580.html git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。 一.git commit之前 未添加到暂存区的撤销(没有git add) 添加进暂存区的撤销(git add后) On branch test_git
假如你想撤销到暂存区之前(即 git add .之前),只需要将--soft修改为--mixed即可。其他的用法和上边一致。
其实很多时候,我们撤销代码可能只是因为注释写的不完善,想重新修改。如果只是想修改下commit后的注释,可以在commit之后,还没有推送远程分支之前,使用git commit --amend命令,进入vim编辑空间,输入i进入编辑模式,修改最上边的注释文字,修改完之后点击esc键,再输入:wq保存退出即可。如下图:
git commit --amend
i
esc
:wq
当然,如果已推送到远程分支上,虽然也能通过这个命令修改日志内容,但是修改完再提交就是新的日志记录,远程上仍然会有旧的注释。 另外,还有假如说我们在本地提交了两次commit填写了两次说明,那也仅仅只能修改最后一次。
推送到远程仓库和提交本地仓库没有什么区别,仍然使用三种模式--soft、--mixed、--hard进行撤销即可。因为撤销其实不管你用什么模式,都是撤销的我们本地代码,与远程无关,至于你撤销完代码之后,是合并回原分支,还是新拉分支,代码是不会影响远程分支的。 使用--hard(谨慎)来回退不同模式的代码。 另外,已经推送到远程分支的代码记录,是无法撤销的,只能是撤销回来本地的改完再提交回去,但是无法撤销以前的提交记录。
有一次我们一个线上项目新增后续租金存量需求,研发直接在线上主分支开发的。但是新开发的功能因为测试和其他问题没法直接上线。后来线上提出了几个bug,需要进行修改。因为线上分支已经加了后续租金存量的代码,这种情况下如果想回滚会线上分支,可以采取以下步骤。
先基于目前的分支(包含了存量后续租金需求),拉出一个新的临时分支。
基于提交说明(此处就体现了要正确写代码提交备注的重要性),找到代码首次提交后续租金存量的需求点,记录下在它之前的版本号。如下: 经过分析,需要回滚到19f5a4a3这次,才能够回滚到线上分支那个状态。
19f5a4a3
基于上图右侧的版本号19f5a4a3b87f0478a9ed061de5fa0e756a36c295,点击复制,然后在这个新拉的临时分支里,输入git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295即可完成这个分支的代码回滚,经过测试没有问题之后,再将该分支合并或者改名为新的线上主分支。
19f5a4a3b87f0478a9ed061de5fa0e756a36c295
git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295
本地如果在主分支上新增功能,主要是加了很多开发的东西,还未提交,这时候可能线上加急解决一个问题,需要修改一下,但是自己新加的代码还没有完成,还要去改以前的分支,这时候应该这么做。
代码不要提交仓库,如果提交了的话,就按照前边的步骤(不能使用–hard)回滚回来,然后先使用git checkout -b 新分支名,拉出一个分支。在这个分支上将代码至少提交到本地仓库。
git checkout -b 新分支名
当新分支代码已提交,再切回主分支的时候,这个分支上就还是线上分支,加急修改要求的问题即可。
代码撤销是应用比较频繁的一个功能,一般最常用的就是git reset 和git reset --amend修改注释两个命令。在使用过程中,一定注意--hard,多加练习就知道其中的区别了。
git reset --amend