Git教程第5篇-工作区和暂存区

2019-10-18 05:18:10   Git

工作区(working directory)

我们创建的 learngit 文件夹就是一个工作区

file

版本库 (repository)

工作区有一个隐藏目录 .git,这个不算工作区,而是Git的版本库。可以用 ls -al 查看

ls -al
total 8
drwxr-xr-x    4 vien  staff   128 Oct 18 12:31 .
drwxr-xr-x+ 119 vien  staff  3808 Oct 18 13:07 ..
drwxr-xr-x   13 vien  staff   416 Oct 18 13:07 .git
-rw-r--r--    1 vien  staff    27 Oct 18 12:24 README.md

Git版本库存了很多东西,其中最重要的是被称为stage或者index的暂存区,还有Git为我们自动创建的第一个分支:master分支,以及指向master的一个指针HEAD

file

现在我们可以详细理解一下之前的 addcommit 命令了。我们在执行git add的时候,实际只是把文件修改添加到暂存区;在执行git commit 提交更改的时候,才会把暂存区的内容提交到当前分支。

当你刚clone了一个项目的时候,你的master分支的内容,跟暂存区的内容,以及你的工作区的内容呢是一样。

当你修改了一个文件,那么你的工作区内容发生了变化,Git会发现这个变化(Git说:哦有东西被修改了),并且标记这些变化。 当你修改后执行了git add那么修改的内容被添加到暂存区,也就是工作区和暂存区是一样的了,且跟master不一样,只有master没变。 当年你又执行了git commit那么暂存区的内容被提交到master了,这时候,工作区、暂存区、master分支三个地方都一样了,都是修改后的内容。

详解 git reset

之前在讲git reset的时候并没有说--hard是干嘛用的,或许大家还心存疑惑,现在了解了Git工作区、暂存区、master分支以及HEAD指针的概念之后,我们详细来说一下git reset这个命令。

它有三个参数soft, mixed, hard。我是按顺序写的,什么顺序呢?令人发指的程度!哈哈~

  • soft, 只回退当前分支的内容,也就是说工作区和暂存区不会变,只有master分支被修改了。对应的等级是git commit的等级,git add的并不会变。
  • mixed,默认的参数。回退当前分支以及暂存区内容,也就是说只有工作区修改不变,master分支和暂存区都回退了。对应的是git add的等级。
  • hard,全部回退!是不是令人发指,如果不小心用了这个命令,那么恭喜你,辛辛苦苦写在工作区的代码全没了,直接回退到指定的版本了,当然,如果你确实也不想要工作区修改的内容了,那就没关系了。

其实平常,直接git reset 版本号就好,也就是使用默认的mixed参数,除非有特殊需求,真的工作区修改都不要了,才会加hard参数。况且git checkout 也可以做一部分回退工作区的任务。

vien.tech版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/226
欢迎小伙伴们在下方评论区留言 ~ O(∩_∩)O
文章对我有帮助, 点此请博主吃包辣条 ~ O(∩_∩)O

猜你喜欢


评论

There are no comments yet.
未登录

登录后即可发表评论

登录或注册

标签

AdSense Anaconda Android API Auth AWS B-tree Bandwagon Blog bower brew bytes Caffe Catalina cloudcone Composer conda crontab CSS Cuda cv2 datetime Digitalocean DNS Docker Docker-Compose export Flask GET Git GitHub Gmail GoDaddy Google GTM hash Homebrew Homestead HTML http HTTPS IDEA image imagemagick imagick imgick import InnoDB ISO8601 iTerm2 Java JPG Keras Laravel Laravel-Admin lazyload Linux list lnmp load logs Lravel Mac Markdown matplotlib md5 mix Mojave mongo MongoDB MySQL Namesilo Nginx npm numpy Nvidia Nvidia-Docker onevps OpenCV Openpose Outline parse PayPal PHP php-fpm PhpStorm PHP扩展 PIL Pillow pip PNG POST Protobuf PyCharm pyenv pymongo Python Queue Redis requests save selenium SEO Shadowsock Shadowsocks ShadowsocksR simplemde Spring Boot SQLServer SSH SSL证书 SSR str Sublime sudo swap Tensorflow Terminal Terminator Ubuntu urllib UTC v2ray Valet Validation Validator VienBlog virtualenvs VPN VPS Vultr Web Windows Xcode zip zmq zsh 下载图片 云主机 云服务器 人工智能 优化 优惠码 伪原创 作弊与反作弊 免费ss账号 免费提现 切片 前端 加密 协议 博客 友链 后台运行 命令 图片操作 图片转换 域名 大小写转换 安卓模拟器 定时任务 定时执行 延迟加载 懒加载 提现 搜索引擎 搬瓦工 搭梯子 教程 数据库 文件上传 日志 时区 时间戳 服务器 机器学习 梯子 港版支付宝 生活服务 科学上网 系统升级 索引 编辑器 自动付款 英文伪原创 计划任务 语法 远程连接 重定向 错误异常 错误提示 队列 阿里云 香港 香港手机号
亲情非友情链接