Git使用(四):提交管理,修改提交信息、合并多次提交、版本回退、撤销本地文件修改等


一、修改提交信息


1、执行 git rebase -i HEAD~n

示例:

 git rebase -i HEAD~3

执行结果如下(列出了近三次的提交记录):
在这里插入图片描述
进入 vim编辑模式,选择需要修改的记录并将行首的pick改为edit(可简写为e),然后保存并退出即可。如下:
在这里插入图片描述
保存并退出后,再执行


2、执行 git commit --amend

执行之后,进入 vim编辑模式,修改信息,然后保存并退出即可。如下:
在这里插入图片描述


3、执行 git rebase --continue

如下则成功:
在这里插入图片描述

注: 如果你修改了多条提交记录,需要重复2、3的操作多次

4、git push

注: 如果你更改的是远程仓库的提交信息,可使用 git push -f 强制push。

二、合并多次提交


方法同上,将被合并的记录行首的pick改为squash(简写为s),即可

三、版本回退


1、命令、参数说明

git reset [--soft | --mixed | --hard] [HEAD]
命令描述
第一个参数
--mixed取消add、取消commit。默认参数可省略
--soft取消commit
--hard取消add、取消commit、取消文件修改(慎用!!!)
第二个参数以下所述的版本包括:本地提交(commit)和远程提交
HEAD当前版本(此版本之前的文件变化由第一个参数控制)
HEAD^HEAD~1上一个版本
HEAD^^HEAD~2上上一个版本
HEAD^^^HEAD~3上上上一个版本
……

2、示例

a. 修改文件后

执行 git reset --hard HEAD撤销所有本地文件的修改,慎用。

b. 修改文件并 add commit 后(此时本地会有一个版本HEAD

执行 git reset HEAD^ 可恢复到文件修改后的状态;
执行 git reset --hard HEAD^ 会撤销所有本地文件的修改,慎用。


四、撤销本地文件修改


1、撤销所有文件的修改

参照上一点

2、撤销指定文件的修改

查询当前文件状态 git status

在这里插入图片描述

根据提示知道可以用 git restore 命令来撤销指定文件修改

命令描述
git restore --worktree filepath表示撤销文件工作区的修改。默认参数可省略,也可简写为 -W
git restore --staged filepath表示撤销暂存区的修改,将文件恢复到未 add 之前。参数可简写为 -S
git restore -s HEAD^ filepath表示将文件撤销 commit,并撤销 add

3、示例

a. 如上图示有两个已修改的文件,并且都没有添加到暂存区,如要撤销 index.html 的修改,可执行:

git restore src/index.html 

b. 如果文件已经添加到暂存区,可执行以下命令将文件撤出暂存区:

git restore --staged src/index.html 

c. 如果文件已经添加到版本库,可执行以下命令将文件撤销 commit,并撤销 add:

git restore -s HEAD^ src/index.html 

注: 当然你可以先执行 git reset HEAD^ ,再撤销指定文件的修改,最后再提交所有文件。


五、工作区、暂存区和版本库


定义描述
工作区就是你在本地里能看到的文件目录。
暂存区暂存区(stage)也叫作索引(index),一般存放在 .git/index 。
版本库工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。


系列文章


Git专栏

Git使用(一):安装与配置
Git使用(二):创建项目并提交到远程仓库
Git使用(三):分支管理,创建分支、合并分支、合并分支的某一次提交等
Git使用(四):提交管理,修改提交信息、合并多次提交、版本回退、撤销本地文件修改等
Git使用(五):解决冲突以及如何避免冲突
SmartGit 安装及使用(一):安装及配置
SmartGit 安装及使用(二):工作界面介绍、提交代码以及防止代码冲突等操作
SmartGit 安装及使用(三):撤销提交、合并多次提交等操作
SmartGit 安装及使用(四):创建、合并分支以及解决冲突等操作
SmartGit 安装及使用(附录):注册非商业许可证
【Git】如何生成SSH key
【Git】.gitignore文件语法以及修改后无效的解决办法
【Git】Authentication failed for 错误解决
【Git】SSL certificate problem: unable to get local issuer certificate错误的解决办法
【Git】error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值