四川建设网网站,软件开发培训学校驾校宝典,codex.wordpress.org,做网站计划表Git 学习指南#xff08;一#xff09;基础概念及入门 一. 基本概念1.1 分布式版本控制1.1.1 集中式版本控制系统1.1.2 分布式版本控制系统1.1.3 特型版本库 1.2 版本库#xff0c;分布式工作的基础所在1.2.1 散列值 1.3 分支的创建与合并1.3.1 分支的其他操作 二. 入门2.1 … Git 学习指南一基础概念及入门 一. 基本概念1.1 分布式版本控制1.1.1 集中式版本控制系统1.1.2 分布式版本控制系统1.1.3 特型版本库 1.2 版本库分布式工作的基础所在1.2.1 散列值 1.3 分支的创建与合并1.3.1 分支的其他操作 二. 入门2.1 准备Git环境2.2 创建版本库2.2.1 初始化版本库2.2.2 提交文件2.2.3 检查状态2.2.4 提交修改2.2.5 显示历史 2.3 Git的协作功能2.3.1 克隆版本库2.3.2 从另一版本库中获取修改2.3.3 从任意版本库中取回修改2.3.4 创建共享版本库并应用 读前须知 本篇章内容取自《Git 学习指南》 P1~P17如需更多详细内容请购买正版书籍 下一章节 【书籍篇】Git 学习指南二提交与多次提交 一. 基本概念
1.1 分布式版本控制
1.1.1 集中式版本控制系统
略。。。详细内容《Git 学习指南》 P1
1.1.2 分布式版本控制系统
优点描述高性能几乎所有的操作都无需进行网络访问均可直接在本地执行高效的工作方式开发者可通过多个本地分支在不同任务之间进行快速切换离线功能开发者可以在没有服务器连接的情况下执行提交、创建分支、版本标签等操作之后再将其上传服务器灵活的开发进程我们可以在团队和公司中为其他部门建立专用的版本库备份作用每个开发者都持有一份拥有完整历史版本的版本库副本可维护性对于那些难以对付的重构工作可以将其成功传送给其原始版本之前先在该版本库的副本上尝试一下
1.1.3 特型版本库
特型版本库描述项目版本库主要用于存储由“官方”创建并发行的版本共享版本库主要用于开发团队内人员之间的文件交换工作流版本库通常只用于填充那些代表工作流中某种特定进展状态的修改派生版本库主要用于从开发主线分离出某部分内容
1.2 版本库分布式工作的基础所在
版本库组件版本库本质上就是一个高效的数据存储结构文件blob既包含了文本也包含了二进制数据这些数据将不以文件名的形式被保留目录Tree目录中保存的是与文件名相关联的内容其中也会包含其他目录版本commit每一个版本所定义的都是相应目录的某个可恢复的状态
1.2.1 散列值 对于所有的数据他们都会被计算成一个十六进制散列值这个散列值将会被用作相关对象的引用以及日后恢复数据时所需的键值 优势描述高性能通过散列值来访问数据非常快冗余度–释放存储空间相同的文件内容只需要存储一次即可分布式版本号由于相关散列值是根据文件作者和日期来计算的所以版本也可以“离线”产生不用担心将来因此而发生版本冲突版本间的高效同步当我们将某一提交从一个版本库传递给另一个版本库时只需要传送那些目标版本库中不存在的对象即可。而正是通过散列值的帮助才能更快地判断相关对象是否已经存在数据完整性由于散列值是根据数据的内容来计算的所以我们可以随时通过Git来查看某一散列值是否与相关数据匹配以检测该数据上可能的意外变化或恶意操作自动重命名被重命名的文件可以被自动检测到因为根据该文件内容计算出的散列值并没有发生变。也正因为如此Git中并没有专用的重命名命令只需要移动命令即可
1.3 分支的创建与合并
1.3.1 分支的其他操作
其他操作描述移植分支我们可以直接将某一分支中的提交转移到另一个版本库中只传送特定修改我们可以将某一分支中的某一次或某几次提交直接复制到另一个分支中捡取处理清理历史我们可以对分支历史进行改造排序和删除。有利于为该项目建立更好的历史文档交互式重订
二. 入门
2.1 准备Git环境
git config --global user.email jieKaMigmail.com2.2 创建版本库
2.2.1 初始化版本库 在F盘创建一个git文件夹创建dev.txt和test.txt作为测试 $ cd /f/git-dev
$ git init
Initialized empty Git repository in F:/git-dev/.git/2.2.2 提交文件 b563b27: 散列值该值取决于文件内容 $ git add src.txt test.txt
$ git commit --message first commit
[master (root-commit) b563b27] first commit2 files changed, 2 insertions()create mode 100644 dev.txtcreate mode 100644 test.txt2.2.3 检查状态 操作 1修改dev.txt 2删除test.txt 3新增prod.txt
更多细节 git diff src.txt $ git status
On branch master
Changes not staged for commit:(use git add/rm file... to update what will be committed)(use git checkout -- file... to discard changes in working directory)modified: dev.txtdeleted: test.txtUntracked files:(use git add file... to include in what will be committed)prod.txtno changes added to commit (use git add and/or git commit -a)2.2.4 提交修改 操作 1添加dev.txt和prod.txt到git上 移除git上的test.txt 2再次调用status 3使用commit提交 $ git add dev.txt prod.txt
$ git rm test.txt
rm test.txt$ git status
On branch master
Changes to be committed:(use git reset HEAD file... to unstage)modified: dev.txtnew file: prod.txtdeleted: test.txt$ git commit --message second commit
[master 8a08078] second commit3 files changed, 2 insertions(), 2 deletions(-)create mode 100644 prod.txtdelete mode 100644 test.txt
2.2.5 显示历史 log命令 可用来显示项目的历史所有提交都会按时间顺序被降序排列起来 $ git log
commit 8a08078e36778ae9506bf625054fb088ce708f59 (HEAD - master)
Author: jieKaMi l
Date: Mon Nov 20 23:33:03 2023 0800second commitcommit b563b27503fb3ac34624418666656ed5db7a855f
Author: jieKaMi l
Date: Mon Nov 20 23:29:22 2023 0800first commit
2.3 Git的协作功能
2.3.1 克隆版本库
$ git clone /f/git-dev /f/git-clone
Cloning into F:/git-clone...
done.2.3.2 从另一版本库中获取修改 操作 1修改dev.txt并在原版本库中提交 2修改prod.txt并在克隆版本库中提交 3在克隆库中pull一下 4可以在克隆库git log --graph查看记录 $ cd /f/git-dev/
$ git add dev.txt
$ git commit --message three commit
[master 2febc9b] three commit1 file changed, 1 insertion(), 1 deletion(-)$ cd /f/git-clone/
$ git add prod.txt
$ git commit --message four commit
[master bf4f4fd] four commit1 file changed, 1 insertion(), 1 deletion(-)$ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From F:/git-dev8a08078..2febc9b master - origin/master
Merge made by the recursive strategy.dev.txt | 2 -1 file changed, 1 insertion(), 1 deletion(-)$ git log --graph2.3.3 从任意版本库中取回修改 操作1回到原版本库 2从克隆库中pull修改操作 $ cd /f/git-dev
$ git pull /f/git-clone master
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
From F:/git-clone* branch master - FETCH_HEAD
Updating 2febc9b..90d84a1
Fast-forwardprod.txt | 2 -1 file changed, 1 insertion(), 1 deletion(-)2.3.4 创建共享版本库并应用 操作1创建一个裸版本库 2修改原版本库dev.txt并提交 3向共享版本库使用push命令 4从共享库中同步到克隆库
裸版本库 通常可被用来充当开发者们传递提交命令的汇聚点以便其他人可从中拉回他们所做的修改 $ git clone --bare /f/git-dev /f/git-bare
Cloning into bare repository F:/git-bare...
done.$ cd /f/git-dev/
$ git add dev.txt
$ git commit --message five commit$ git push /f/git-bare master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 255 bytes | 255.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To F:/git-bare90d84a1..600c3c3 master - master$ cd /f/git-clone
$ git pull /f/git-bare master
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From F:/git-bare* branch master - FETCH_HEAD
Updating 90d84a1..3d681ec
Fast-forwarddev.txt | 2 -1 file changed, 1 insertion(), 1 deletion(-)