ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【Git】工作区、暂存区和版本库
[打印本页]
作者:
耶耶耶耶耶
时间:
2024-11-21 17:44
标题:
【Git】工作区、暂存区和版本库
目录
一、基本概念:
关系图:
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企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4