作者:@ssgao
本文为作者原创,转载请注明出处:https://www.cnblogs.com/ssgao/p/8881957.html
目录
git工作区
版本库暂存区
git管理修改
git撤销修改
git删除文件
git工作区
git的工作区就是电脑中能看到的目录,比如我的learning文件夹就是一个工作区
版本库暂存区
工作去有一个隐藏的目录.git,这个不算工作区,而是git的版本库
git的版本库中存了很多东西,其中最重要的就是stage(或是index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫head
我们把文件向git版本库里添加的时候,分为两步:
用git add 把文件添加进行实际上就是把文件修改添加到暂存区
用git commit提交更改,实际上就是把暂存区的内容提交到当前分支,我们创建git版本库时候,git自动为我们创建唯一一个master分支,所以现在,git commit就会想master分支提交更改。
如我们修改了readme.txt和新添加了license,使用git status 命令就会提示我们修改了readme文件,license新添加的文件会提示Untracked的状态,使用git add 添加到暂存区
使用 git commit提交到master版本库
最后,通过git push推送到远程仓库
git管理修改
git跟踪并管理的是修改,而非文件。
例如:第一次修改->git add -> 第二次修改 ->git commit
在用git add命令后,在工作去第一次修改被放入暂存区,但是在工作区的第二次修改并没有放入暂存区,所以git commit只负责把暂存区的修改修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。(原因:git管理的是修改)
如果需要提交第二次修改,应该如何做呢?
> 可以继续git add再git commit
> 别着急提交第一次修改,先git add第二次修改,在git commit,就相当于把两次修改合并后在一块提交了。
> 第一次修改->-git add>第二次修改->git add->git commit
git撤销修改
工作文件修改错误,需要撤销,命令git checkout -- 就派上用场
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,有两种情况
readme.txt修改后没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
readme.txt已经添加到暂存区,又作了修改,现在撤销修改就回到添加到暂存区后的状态
总之,就是让这个文件回到最近一次git commit或git add时的状态
如果文件已经修改并git add添加到暂存区,在git commit之前,需要撤销修改,使用命令 git reset head file.
命令 git reset head file 可以把暂存区的修改撤销掉,重新放回工作区。
(场景1)如果改乱了工作区的某个文件的内容,想直接丢弃工作去的修改的时候,使用命令 git checkout --file
(场景2)不然改乱了工作去并且添加到暂存区的时候,想直接丢弃,分为两步 第一 使用命令 git reset Head file ,回到"场景1",第二部按场景1操作。
(场景3)如果已经提交了不合适的修改到版本库,想撤销本次提交,使用"版本回退" 前提是没有推送到远程库。
ps注意:
使用的git checkout --file 命令,命令中的"--"很重要,没有"--"就变成了切换到另外一个分支的命令。
git删除文件
文件从工作区删除,工作区和版本库就不一致了,通过git status就可发现那些文件被删除。
如果确实需要从版本库中删除该文件,就用命令 git rm删掉,并且 git commit;
如果删除错了,因为版本库中还有该文件,使用 git checkout -- xx.file 还原该文件。
命令:git checkout是用版本库中的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥