git版本控制

版本是为软件的任一特定时刻(Moment)的形态指派一个唯一的编号,作为在在整个开发过程中的“身份标识”,而版本控制就是对每次更改的不同版本进行记录,保留备用。

版本控制系统分为本地版本控制系统、集中式版本控制系统、分布式版本控制系统三种。本地的只能用于本地机器,集中式的可以支持多台机器之间进行协作,分布式是上述两者的统一。

传统的版本控制软件是记录每次更改的内容,需要的时候再根据记录进行更改;而现在最流行的版本控制工具git则是记录每一本完整的版本,需要的时候直接提取即可,极大地提高了软件的效率。

3.3 git
git是一种分布式版本控制工具。

3.3.1 git的结构和原理
一个git仓库有3个部分:

.git仓库(配置管理数据库,存储软件的各配置项随时间发生变化的信息和基线)
工作目录:本地文件系统
暂存区:用来隔离工作目录和git仓库
文件在git仓库的3个状态:

已修改:刚在工作区改完,还没有放到暂存区
已暂存:将在工作区改完的版本add到暂存区
已提交:将在暂存区的版本commit到.git仓库,此时工作目录的版本与git仓库的版本保持一致

除此之外,git还有远程仓库,支持多人协作功能,如果想要将本地仓库的内容提交到远程仓库以供别人使用,则还需要push到远程仓库。当然,如果你想使用别人的远程仓库的内容,也需要先从远程仓库pull下来。

git的所有操作都是在一个图数据结构上进行的,git对象图存储在存储库的.git目录中。从另一台机器/服务器复制git项目意味着复制整个对象图。

对象图是一个有向的无环图,一条边A → B A\rightarrow BA→B表示“在版本B的基础上做出变化,形成了版本A”;每个$ \rightarrow$指向一个父亲,如果有多个commit指向同一个父亲,则为一个父亲产生了多个子节点,即为branch;如果是一个commit指向多个父亲,则表示多个父亲节点合并形成了子节点,即为merge

每次commit都会在git仓库中形成一个新的节点,这个节点包含所有文件的完整快照。每个节点中包含以下信息:根节点、作者、提交者、备注信息等

3.3.2常用git命令:
git init//初始化git仓库
git add//将工作目录下的版本提交到暂存区
git add readme.md//将文件添加到暂存区,开始对这些文件进行跟踪
git commit//将暂存区文件提交到本地仓库
git push//将本地仓库的文件提交到远程仓库(服务器)
git status//查看当前文件状态
git diff//查看工作区和暂存区快照之间的差异,即修改后未add的内容
git commit -a//跳过git add步骤,直接将所有修改过的文件暂存起来并提交
git rm//从git中移除某个文件,不再跟踪,也将原文件删除
git fetch//从远程仓库抓取文件到本地,但不与本地的合并
git pull//与fetch类似,但是还会与本地合并
git branch//查看本地分支
git branch phase//创建本地分支phase
git checkout phase//切换到分支phase
git checkout -b phase1//创建分支phase1并切换到phase1分支
git merge phase//将分支phase合并到main分支上,需要在主分支(main)上进行操作
git branch -D b1//强制删除分支

你可能感兴趣的:(笔记,git)