一、git是用来干什么的?
git:是目前世界上最先进的分布式版本控制系统,是一款免费、开源的控制系统。最初Git是为辅助 Linux 内核开发的,来替代 BitKeeper,Linux和Git之父李纳斯·托沃兹用了约2周的时间完成了git的开发。
概念:
版本控制:是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
分布式:所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。同时也有一定的安全隐患,而git是目前世界上最先进的分布式版本控制系统。
集中式:所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。SVN就是典型的集中式版本控制系统。
二、安装git
方式一:官网安装,特点:慢
https://git-scm.com/https://git-scm.com/
方式二:国内镜像安装,特点:快
地址:CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html
剩下的安装步骤就是点下一步安装就可以。
安装好了就可以看到菜单栏里一下的信息
或者桌面右键可以看到git的快捷功能
Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
三、配置账号
打开这个功能:
输入:每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中,所以一定要设置好
git config --global user.name "xxxxxx" #你的名称
git config --global user.email xxxxxx #你的邮箱
四、
Git基本理论(概念类)
工作区域
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。
-
Workspace:工作区,就是你平时存放项目代码的地方
-
Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
-
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
-
Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
工作流程
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
五、项目搭建
本地搭建:
无远程代码库,仅在本地搭建,一般开发的时候很少是这种情况
在本地创建一个你想放代码信息的文件夹,在这个文件下右键,打开git bash,执行初始化的命令:git init
执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。
远程仓库搭建:
克隆远程仓库,在本地创建一个你想放代码信息的文件夹,在这个文件下右键,打开git bash,执行初始化的命令:git clone + url
具体操作如下:以gitee为例
1、在gitee注册一个账号,按照要求注册即可
2、绑定SSH公钥,在设置中-安全设置中绑定,实现免密码登录。
3、在计算机中生成公钥
在C盘下面找到用户,找到你的用户账号(每个人计算机不同,名字可能不同,找到.ssh这个文件夹,进入之后右键,点击open git bash here)
然后输入ssh-keygen 回车
就会生成以下几个文件,用编辑器打开id_rsa.pub,里面记录的就是公钥信息
编辑器可以选用sublime或者Notepad++都可以打开
复制这个信息,添加到gitee的配置中,记得写一个标题,然后保存即可。
4、新建仓库
参照截图操作
远程仓库就创建好了
5、拉取远程仓库
在本地创建一个你想放代码信息的文件夹,在这个文件下右键,打开git bash,执行初始化的命令:git clone + url
拉取的url地址在这里:
拉取成功~
!!!如果这个位置远程拉取gitee的时候报错,提示你输入用户名和密码
那么用户名是这个位置的用户名,参照截图写你自己的,密码是gitee的登录密码
成功拉取到本地了,和远程仓库是一致的
5、将远程仓库和自己的本地项目绑定
将以下的信息复制到本地代码所在的目录
再打开你自己的编辑器就能看到git的信息了
可以通过IDEA的提交commit和push快捷键将代码提交远程仓库
六、Git文件操作及常用指令
1、文件的四种状态
-
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 提交信息
2、忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
-
忽略文件中的空行或以井号(#)开始的行将会被忽略。
-
可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
-
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
-
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
-
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
以下是默认忽略的内容,可以根据自己的实际情况再进行编辑
3、日常使用只要记住下图6个命令(如果记不住,用IDEA中提供的快捷功能也可以)
七、Git再学习(关于分支和冲突的解决办法)
分支在GIT中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的develop分支上工作,工作完后,比如上要发布,或者说develop分支代码稳定后可以合并到主分支master上来。
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!
分支常用命令
# 列出所有本地分支
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]
GIT再学习:gitee中提供了很详细的git命令和git教程,感兴趣的同学可以多了解哦~学无止境,一起加油!