首页 > 其他分享 >git commit -amend

git commit -amend

时间:2023-08-08 18:24:45浏览次数:37  
标签:git amend -- 缓存 提交 commit checkout

git commit -amend

有时你提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录;或者你上一次的commit message的描述有误,这时候你可以使用接下来的这个命令:git commit --amend。

场景1.本地开发代码已提交,提交后发现这次提交的代码有问题,或者漏提交了一些文件,此时,希望达到以下目的:

①修改有问题的代码。

②补足漏提交的文件(一般是新增的文件没有git add .)

③把以上2点相关的代码,和前一次提交的代码合并成1个提交。

④给合并后的这个提交添加新的注释。

解决办法:

--》修改问题代码

--》git add . (把漏提交的文件假如暂存区)

--》执行git commit --amend -m "这里填写提交的注释"

场景2.新接到需求,需要基于master分支拉取一个feature分支,且这个feature分支只有你自己使用(这一点极其重要),由于开发周期较长,你不想每一次都产生一个新的commit,而是每一次commit都修改前一次提交,这样做的好处是,等到你的feature分支提测时,就只有1个干净的commit,没有乱七八糟的提交历史,你只要把这1个commit合并到master里就好了 。

解决办法:在feature分支上,

第1次提交代码时,使用git commit -am "第1次提交的注释"

第2次以后提交代码时,使用git commit --amend -m "这里填写提交的注释"

这样,整个分支可以只有1个commit。

 git checkout --file

在我修改了工作区的内容后 使用 git checkout -- <file>到底是从缓存区还是版本库中还原呢 ,对此只有实践才有发言权

第一步:在管理库中添加一个版本: 

第二步:在缓存区中添加一个版本:

第三步:修改工作区文档

 

第四步:第一次使用git checkout -- <file>:

好了这时还原的结果是从缓存区里拉取的还原,貌似CSDN的网友说的更对。别急现在还不能下结论,毕竟廖神怎么会犯这种低级错误呢

第五步:清空缓存区:

附:清空暂存区,所谓的暂存区仅仅是.git目录下的一个index文件罢了,这也是为了什么被称为index(索引) 

当删除暂存区内容的时候,其实就是删除index文件中的内容,.git/objects目录中的内容不会被删除。

指令:rm .git/index 直接删除该文件夹即可

第六步:这个时候缓存区没有版本了再次使用git checkout -- <file>:

发现再次执行git checkout -- <file>会报找不到文件,说明git checkout -- <file>不会从版本库中拉取文件

第七步:执行git reset HEAD将HEAD区里HEAD版本给恢复到暂存区

第八步:这个时候缓存区没有版本了再次使用git checkout -- <file>:

结论
通过以上操作,可以得出结论git checkout -- <file>指令是从先从缓存区中拉取版本还原,并不会从版本库中拉取还原。

标签:git,amend,--,缓存,提交,commit,checkout
From: https://www.cnblogs.com/lanlancky/p/17615088.html

相关文章

  • Typora+GitHub+PicGo设置
    Typora+GitHub+PicGo创建GitHub图像存储仓库新建仓库输入仓库名称image-repo选择public公开属性用户设置settings找到developersettings创建token选择classic输入名称,token过期时间,和repo,点击创建token复制保存token,后面要用PicGo设置仓库名......
  • git命令
    创建版本库gitinitgitinit-bbranchname文件基本操作文件提交暂存区gitadd-Agitaddfilename文件提交到本地库gitcommit-m"提示信息"从暂存区撤销修改gitresetHEAD文件名从工作区撤销修改gitcheckout--文件名文件查看历史记录gitlog......
  • 在windows上使用_netrc文件让Git记住用户名和密码(Linux文件名为.netrc)
    windowsnetrc文件是什么。根据我搜索到的结果,windowsnetrc文件是一种用于保存网络身份验证信息的文件,例如用户名和密码。它可以被一些命令行工具和应用程序使用,比如Git、curl、ftp等。windowsnetrc文件的格式如下:machine<hostname>login<username>password<password>......
  • Git基础学习
    语雀不支持公开分享了,打算将博客转移阵地,目前先把以前的博客转录进来1.介绍gitcmd类似Windows的cmd操作gitBash类似Linux下的操作gitGui图形化操作,操作太慢了,一般不使用2.基本命令(Linux)cd..回退到上一个目录pwd显示当前所在的目录ls显示当前目录的所有文件to......
  • Git上传本地项目文件到远程仓库
    为了标识身份,建议先完成Git全局设置gitconfig--globaluser.name"xxxxxx"gitconfig--globaluser.email"[email protected]"方式一:克隆仓库gitclonehttps://xxx.xxxxx.com/xxxxxx/xxx.gitcdxxxtouchREADME.mdgitaddREADME.mdgitcommit-m"addRE......
  • IDE committ规范及要求——多次提交的committ通过rebase合并---深入一点点-遇到merge
    1.强推-命令行操作//中止正在进行的Gitrebase操作的命令gitrebase--abort//将当前分支重命名为backupgitbranch-mmini_alarmmini_alarm_backup//用远端主分支拉gitcheckout-bmini_alarmupstream/master//gitk会打开一个图形界面窗口,显示当前目录下Git仓库......
  • 一篇博客带你上手Git
    概述安装Git下载官方网站,下载后安装包样式:双击安装,安装成功后右键文件会有如下选项证明安装成功。基本配置设置用户信息,桌面右键,选择Gitbashherehecheng@LAPTOP-OJQFEH00MINGW64~/Desktop$gitconfig--globaluser.name"hecheng"hecheng@LAPTOP-OJQFEH00MINGW64......
  • git从远程仓库下载分支
    试一下在github仓库获取地址输入命令建立本地链接和链接远程仓库之后就可以下载源码了 ......
  • git操作误区
    好久没有使用git工具,对git的理解产生了误区,在此来记录一下。对于git管理,我以为是本地一套管理,远程另一套管理。实际上,从远程拉下代码,和远程进行关联后,只要本地新建分支并有所改动,即可创建远程分支并上传。操作步骤:gitclone [email protected]:xxx/your.gitgitremoteaddor......
  • 【开发中】Git常用命令详解
    基于平时工作的场景,整理了使用频率较高的一些命令和参数,作为一个Git命令的备忘录。gitclone概述:将远程Git仓库克隆到本地,自动将远程仓库的所有分支和历史记录复制到本地。格式:gitclone[-b<name>]<repository>[<directory>]参数:-b<name>,等同--branch<name>不将新创......