Git原理及实践(Fork模式)

1.简介:

Git是目前最先进的分布式版本控制系统,在git的管理下,每个人的电脑上都有一个完整的版本库,配合云上一台充当“中央服务器”的电脑(方便交换和修改)。
git是用于记录文件变更的版本控制系统, 支持文件版本跟踪,记录,回退,合并 等操作,并在此基础上实现了版本切换,差异比较,分支管理,分布式协作等功能。

2.版本库结构:

keywords: 管理,追踪,二进制文件

.git

git init .;

多次add,一次性commit到本地master;

Git原理及实践(Fork模式)_第1张图片

  • 在工作目录中修改文件。

  • 暂存文件,将文件的快照放入暂存区域。

  • 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

Git存储的是 某一时刻所有文件的快照,而且存储的是整个文件的内容,而不是文件的差异。Git每次都记录的是文件的一个新的版本
Git原理及实践(Fork模式)_第2张图片
其他版本控制系统记录的是原始文件以及文件的差异:
Git原理及实践(Fork模式)_第3张图片

3.Git下文件状态:

git init

git status
Git原理及实践(Fork模式)_第4张图片

(图片来源:Git官网)

4.HEAD(分支管理)

keywords:快照,log,

理解:当前活跃分支的游标(下图主要体现commit版本号的移动)

1.在master分支上时(HEAD指向master,master指向最新的提交)
Git原理及实践(Fork模式)_第5张图片
2.执行git checkout dev(切换到当前指向的分支dev)
Git原理及实践(Fork模式)_第6张图片
3.在dev分支上进行开发,&^)@$%#_())(#*)@>@(…

(dev跟随着commit移动,HEAD随之移动)
Git原理及实践(Fork模式)_第7张图片
4.切换到master分支(HEAD随之切换,指向master),执行git merge dev(master指向了dev最新的提交)
Git原理及实践(Fork模式)_第8张图片

6.fork模式下的开发与合并

Git原理及实践(Fork模式)_第9张图片

7.相关知识点总结:

1.git diff:

  • git diff #是工作区(workspace)和暂存区(stage)的比较 ;

  • git diff --cached #是暂存区(stage)和分支(master)的比较;

  • git diff HEAD #查看工作区和版本库里面最新版本的区别;

2.命令git checkout --test.txt意思就是,把test.txt文件在工作区的修改全部撤销,这里有两种情况:

  • 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  • 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态;

3.git reset之后,整个工作区的所有文件都会回到指定版本提交的那个状态;

4.git revert 操作实现以退为进;

5.rm:

  • 如果你用的rm删除文件,那就相当于只删除了工作区的文件,如果想要恢复,直接用git checkout – 就可以

  • 如果你用的是git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,需要先git reset HEAD ,然后再git checkout –

  • 如果你想彻底把版本库的删除掉,先git rm,再git commit 就ok了

6.只有版本库的修改才可以被跟踪;

7.git status 查看当前git仓库与上一次commit之后的版本库的一切修改,包括工作区的修改和暂存区的修改;

8.由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令;

9.HEAD指向master,master指向最新的提交;

10.只git add ,没有git commit,此时,暂存区比分支新一个版本。

8.命令速查:

9.相关资料:

廖雪峰的git教程:https://www.liaoxuefeng.com/wiki/896043488029600
pro Git中文版:https://gitee.com/progit/

你可能感兴趣的:(Java,常用工具,git)