[TOC]

版本控制与Git历史:

版本控制(revision control):

在开发中管理文件或工程等相关内容的修改历史,便于回溯恢复。

版本迭代 版本控制器

多人开发,统计工作量

常见版本控制工具:GIt SVN CVS VSS TFS Visual Studio Online

Git历史:

版本控制分类:

本地版本控制–适合个人用 RCS

集中版本控制–服务器端开发协作 SVN、CVS、VSS

分布式版本控制–各用户保存全部版本数据 Git

Git与SVN区别:

Git–分布式版本控制系统 不需要联网工作,每个人电脑就是完整的版本库

SVN–集中式版本控制系统 必须联网工作,统一调配

Git是目前世界上最先进的分布式版本控制系统。

Git历史:

Linux广大参与者在进行内核维护工作时事务繁杂,开始使用BitKeeper(分布式版本控制系统),后来BitKeeper与Linux社区合作关系结束,Linux开源社区便基于BitKeeper开发出Git。

Git安装配置问题:

淘宝镜像下载源:

http://npm.taobao.org/mirrors/git-for-windows/

删除Git时记得清理环境变量。

常用Linux命令:

image-20210819091820776

Git配置:

查看配置: git config -l

​ 查看系统配置: git config –system –list

​ 查看当前用户配置: git config –global –list

Git相关配置文件:

​ Git\etc\gitconfig:git安装目录下的gitconfig

​ C:\Users\Administrator.gitconfig:当前登录用户的配置

设置用户名与邮箱:

git config --global user.name "xxx"	#名称
git config --global user.email xxx #邮箱
# global全局 local当前特定

image-20210819093923782

Git基本理论:

git本地有三个工作目录:

​ 工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository/Git Directory)

远程是git仓库(Remote Directory)

可以分为四个工作区域。

image-20210819095013308

Workspace:工作区,就是你平时存放项目代码的地方

Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

image-20210819095541749

Git的工作流程:

1、在工作目录中添加、修改文件。

2、将需要进行版本管理的文件放入暂存区域。 git add

3、将暂存区域文件提交到git仓库。 git commit

git管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)

image-20210819100109408

Git项目搭建:

创建工作目录:

workspace就是希望Git帮助你管理的文件夹,可以是项目的目录,也可以是一个空目录,最好不要有中文。

image-20210819100656217

本地仓库搭建:

在git管理的项目的根目录执行:git init

就会在该目录下创建一个.git目录

image-20210819101343569

克隆远程仓库:

git clone [url]

image-20210819101706014

Git文件操作:

文件的四种状态:

Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !

Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

查看文件状态:

查看指定文件状态:

git status [filename]

查看所有文件状态:

git status

# git add .                  添加所有文件到暂存区
# git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息

忽略文件:

对于数据库文件,临时文件,设计文件想要不出现在.git里,就在主目录建立“.gitgnore”文件:

忽略文件中的空行或以井号(#)开始的行将会被忽略。

可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。

如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。

如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。

如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!

!lib.txt lib.txt除外

/temp 仅忽略项目根目录下的TODO文件,不包括其它目录temp

build/ 忽略build/目录下的所有文件

doc/*.txt 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

本机绑定SSH公钥,实现免密登录

进入C:\Users\Administrator.ssh 目录

ssh-keygen -t rsa

image-20210819103707583

然后将public key添加到码云账户中。

IDEA中继承git

1、新建项目,绑定git

在这里是将远程的git-study文件目录拷贝到刚刚创建的git-learning项目中

image-20210819110242062

image-20210819110410907

刷新后观察IDEA变化:

image-20210819110447838

2、修改文件,使用IDEA操作git

添加到暂存区

commit提交

push到远程仓库

image-20210819111021085

image-20210819111334658

image-20210819111251263

3、提交测试

image-20210819112122055

image-20210819112256687

Git分支:

git分支中常用指令:

# 列出所有本地分支
git branch

# 列出所有远程分支
git branch -r

# 新建一个分支,但依然停留在当前分支
git branch [branch-name]

# 新建一个分支,并切换到该分支
git checkout -b [branch]

# 合并指定分支到当前分支
$ git merge [branch]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

image-20210819113327765

image-20210819112623240

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。