论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
开源技术
›
开源技术
›
【Git】工作区、暂存区和版本库
【Git】工作区、暂存区和版本库
耶耶耶耶耶
金牌会员
|
2024-11-21 17:44:31
|
显示全部楼层
|
阅读模式
楼主
主题
981
|
帖子
981
|
积分
2943
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
目录
一、基本概念:
关系图:
1. 工作区(Working Directory)
$ 1.1 工作区功能
$ 1.2 工作区特点
2. 暂存区(Staging Area)
$ 2.1 暂存区功能
$ 2.2 暂存区特点
$ 2.3 常用命令
3. 版本库(Repository)
$ 3.1 版本库功能
$ 3.2 版本库特点
$ 3.3 常用命令
二、工作区、暂存区和版本库之间的关系
1. 工作区 -> 暂存区
2. 暂存区 -> 版本库
3. 版本库 -> 远程仓库
4. 远程仓库 -> 本地版本库
实例:
一、基本概念:
工作区
:就是电脑里能看到的目录。
暂存区
:英文叫stage或index。一般存放在 .git 目录下的index文件(.git/index)中,所以我们把暂存区有时也叫索引(index)。
版本库
:工作区有一个隐蔽目录 .git ,这个不算工作区,而是Git的版本库。
关系图:
图中左侧为工作区,右侧为版本库。在版本库中标志为 "
index
" 的区域是
暂存区
(stage/index),标志为 "master" 的是
master 分支
所代表的目录树。
图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用
master
来替换。
图中的 objects 标识的区域为 Git 的
对象库
,实际位于 "
.git/objects
" 目录下,内里包罗了创建的各种对象及内容。
当对工作区
修改(或新增)的文件
执行 git add 命令时,
暂存区
的目录树被更新,同时工作区修改(或新增)的文件内容被写入到
对象库
中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操纵(
git commit
)时,
暂存区
的目录树写到版本库(
对象库
)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
当执行
git reset HEAD
命令时,
暂存区
的目录树会被
重写
,被
master 分支
指向的目录树所替换,但是工作区不受影响。
当执行
git rm --cached <file>
命令时,会直接从
暂存区
删除文件,工作区则不做出改变。
当执行
git checkout .
大概
git checkout -- <file>
命令时,会用
暂存区
全部或指定的文件替换
工作区
的文件。这个操纵很伤害,会清除工作区中未添加到暂存区中的改动。
当执行
git checkout HEAD .
大概
git checkout HEAD <file>
命令时,会用 HEAD 指向的
master 分支
中的全部大概部分文件替换
暂存区和以及工作区
中的文件。这个命令也是极具伤害性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
1. 工作区(Working Directory)
$ 1.1 工作区功能
工作区是本地计算机上的项目目录,在这里举行文件的创建、修改和删除操纵。
工作区包罗了当前项目标所有文件和子目录。
$ 1.2 工作区特点
显示项目标当前状态。
文件的修改在工作区中举行,但这些修改还没有被记录到版本控制中。
2. 暂存区(Staging Area)
$ 2.1 暂存区功能
暂存区是一个临时存储区域,它包罗了即将被提交到版本库中的文件快照,在提交之前,可以选择性地将工作区中的修改添加到暂存区。
$ 2.2 暂存区特点
暂存区保存了将被包罗在下一个提交中的更改。
可以多次使用git add命令来将文件添加到暂存区,直到预备好提交所有更改。
$ 2.3 常用命令
git add filename # 将单个文件添加到暂存区
git add . # 将工作区中的所有修改添加到暂存区
git status # 查看哪些文件在暂存区中
复制代码
3. 版本库(Repository)
$ 3.1 版本库功能
版本库包罗了项目标所有版本历史记录。
每次提交都会在版本库中创建一个新的快照,这些快照是不可变的,确保了项目标完整历史记录。
$ 3.2 版本库特点
版本库分为本地版本库和远程版本库。(这里重要指本地版本库)
本地版本库存储在 .git 目录中,他包罗了所有提交的对象和引用。
$ 3.3 常用命令
git commit -m "Commit message" # 将暂存区的更改提交到本地版本库
git log # 查看提交历史
git diff # 查看工作区和暂存区之间的差异
git diff --cached # 查看暂存区和最后一次提交之间的差异
复制代码
二、工作区、暂存区和版本库之间的关系
1. 工作区 -> 暂存区
使用 git add 命令将工作区中的修改添加到暂存区。
git add filename
复制代码
" . "是所有
git add .
复制代码
2. 暂存区 -> 版本库
使用git commit 命令将暂存区中的修改提交到版本库。
git commit -m "Commit message"
复制代码
引号里填提交信息。
3. 版本库 -> 远程仓库
使用 git push 命令将本地版本库的提交推送到远程仓库。
git push origin +分支名。
git push origin branch-name
复制代码
4. 远程仓库 -> 本地版本库
使用 git pull或 git fetch 命令从远程仓库获取更新。
git pull origin branch-name
# 或者
git fetch origin branch-name
git merge origin/branch-name
复制代码
实例:
1. 从远程仓库中(master分支)得到文件到本地电脑。
git clone
复制代码
2. 在工作区(目录)中修改文件后添加到暂存区。
git add .
复制代码
3. 将暂存区的修改提交到本地版本库。
git commit -m"第一次提交"
复制代码
4. 将本地提交推送到远程仓库。
git push
复制代码
如有分支,clone后就进入,提交等操纵都在分支中举行。
git push origin Hou
复制代码
"Hou"为我的分支名。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
耶耶耶耶耶
金牌会员
这个人很懒什么都没写!
楼主热帖
为什么你应该停止依赖Jenkins的插件? ...
蜻蜓优化算法(Matlab完整代码实现) ...
集合论第6-8章
axios&spring前后端分离传参规范总结 ...
SQL 教程之 10 个 SQL 操作用于 80% 的 ...
关于Maven的使用
Python知识点(史上最全)
腾讯云多媒体文件处理总结
JVM常用调优配置参数
20220319编译OpenHarmony-v3.1-beta出 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
linux
物联网
移动端开发
数据仓库与分析
人工智能
快速回复
返回顶部
返回列表