Git
简介
Git是一个分布式版本控制工具,使用它有如下作用
1、备份
2、代码还原
3、协同开发
4、追溯问题代码的编写人和编写时间(可以查看修改的内容)
版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程,方便查看修改历史记录,备份以便恢复以前的版本等作用的软件工程技术。
版本控制的方式
🌳 本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人使用,如RCS
🌳 集中式版本控制
版本库是集中存放在中央处理器的,team里每个人work时从中央处理器下载代码,是必须联网才能工作的,局域网或互联网。个人修改后提交到中央版文本库。如:SVN
和CVS
(过时)
🌳分布式版本控制
所有的版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需要在联网时push到相应的服务器或其他用户那里。由于每个用户那里都时所有的版本数据,只要一个用户的设备没有问题就可以恢复所有的数据,但是增加了本地存储的空间,每个用户都拥有全部的代码,有一定的安全隐患。如:Git
Git和SVN最主要的区别
SVN
是集中式版本控制系统,版本库是集中放在中央处理器的,而工作的时候用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,在工作完成之后还需要将修改的版本提交到中央处理器,集中式版本控制必须联网才能工作,对网络带宽要求较高。
Git
是分布式版本控制系统封,没有服务器,每个人的电脑就是一个完整的版本库,由于版本都在自己的电脑上,所以工作时不需要联网。协同方法如下:
如果自己的电脑上改了文件A, 其他人也在电脑上改了文件A,这时,两人之间是需要把各自修改的推送给对方,就可以互相看到对方的修改了。
分布式版本控制工具(Git)
Git安装
https://blog.csdn.net/qq_42547733/article/details/129956784
如果文中的下在方式比较慢也可以使用镜像的方法:
http://npm.taobao.org/mirrors/git-for-windows/
安装完成之后,我们会在目录中看到以下的图标:
Git Bash
:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD
:Windows风格的命令行
Git GUI
:图形界面的Git,不建议初学者使用
常用的Linux命令
cd #改变目录
cd.. #回退到上一个目录,直接cd进入默认目录
pwd #显示当前所有的目录路径
ls(ll) #都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细
touch #新建一个文件,如touch index.js就会在当前文件目录下新建一个index.js文件
rm #删除一个文件,rm index.js就会把文件删除
mkdir #新建一个目录,就是新建一个文件夹
rm -r #删除一个文件加, rm -r src 删除src目录
mv #移动文件,mv index.html src index.html是我们要移动的文件,src是目标文件夹,需要保证文件夹在同一目录下
reset #重新初始化终端/清屏
clear #清屏
history #查看命令历史
help #帮助
exit #退出
Git配置
设置用户名和邮箱(用户标识,必须要配置)
当你安装Git后首先要做的事情是设置你的用户名称和email地址,这是非常重要的,因为每次Git提交信息都会使用改信息,他被永远的嵌入到你的提交中。
配置命令:
git config --global user.name "你自己的gitee/github名称"
git config --global user.email #你绑定的邮箱
注:
如果你传递了–global选项,就只需要做一次,如果你希望在一个特定的项目中使用不同的名称或email地址,你可以在该项目中运行该命令而不要–global选项。
查看配置
git config -l
查看系统配置
git config --system --list
查看本地配置
用户自己配置的东西。
git config --global --list
Git相关的配置文件
Git\etc\gitConfig:Git安装目录下的gitConfig --system系统级
C:\用户\登录用户.gitconfig 只适用于当前登录用户的配置 --global全局,这里可以直接编辑配置文件,通过命令设置会影响到这里。
Git基本理论
工作区域
Git本地有三个区域 工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个工作区域之间的转换关系如下:
Working
工作区,就是平常存放项目代码的地方
Index/Stage
暂存区,用于暂时存放你的改动,事实上它只是一个问文件,保存即将提交到文件列表信息。
Repository
仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote
远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
工作流程
- 在工作目录中添加、修改文件
- 将需要进行版本管理的文件放入暂存区域
- 将暂存区域中的文件提交到git仓库
Git管理文件的三种状态:已修改(modified)、已暂存(staged)、已提交(committed)。
Git项目搭建
创建工作目录与常见命令
工作目录(WorkSpace)
一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。
日常使用只要记住下图命令
命令 | 含义 |
---|---|
clone(克隆) | 从远程仓库中克隆代码到本地仓库 |
checkout(检出) | 从本地仓库中检出一个仓库然后进行修订 |
add(添加) | 在提交前,先将代码提交到暂存区 |
commit(提交) | 提交到本地仓库。本地仓库中保存修改的各个历史版本 |
fetch(抓取) | 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少 |
pull(拉取) | 从远程仓库拉到本地库,自动进行和并(merge),然后放到工作区,相当于fetch + merge |
push(推送) | 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库。 |
本地仓库搭建
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库
创建全新的仓库。
创建全新仓库
-
创建全新的仓库,需要使用Git管理的项目的根目录执行
-
执行后仅仅在项目目录中多出来一个.git目录,关于版本等的信息都在这个目录里面。
克隆远程仓库
-
将远程服务器上的 仓库完全镜像一份至本地。
Git文件操作
文件状态
在进行版本控制时,会涉及到以下四种状态:
版本控制:就是对文件版本的控制,要对文件进行修改、提交等操作,我们需要知道文件当前的状态,不然可能会提交了现在还不想提交的文件,或者是要提交的文件没有提交上。
状态 | 含义 |
---|---|
Untracked | 未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制,可以通过git add 状态变为Staged. |
Unmodify | 文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改而变为Modified ,如果使用git rm 移出版本库,则成为Untracked 文件。 |
Modified | 文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过git add 可以进入staged状态,使用git checkout 则丢弃修改过,回到Unmodified状态,这个git checkout 即从库中取出文件,覆盖当前修改! |
Staged | 暂存状态,执行git commit 则将修改同步到库中,这时库中的文件和本地文件有变为一致,文件为Unmodified状态,执行git reset HEAD filename取消暂存,文件状态为Modified |
看着上面的介绍很复杂,但不用太在意,了解就好,后面的操作会使你更加明了。
查看文件状态
#查看指定文件的状态
git status [filename]
#查看所有文件状态
git status
使用码云(Gitee)
1、📕 注册登录码云
2、📕 设置本机绑定SSH公钥,实现免密码登录
- 在本机上找到.ssh 目录, C:\Users\用户.ssh
这个文件在我们安装了Git之后就存在。
- 刚开始的时候时一个空目录,我们可以在该目录下使用ssh-keygen
-t rsa
表示加密算法, -t即指定密钥的类型,密钥的类型有两种,一种是RSA,一种是DSA:
RSA
:RSA加密算法是一种非对称加密算法,是由三个麻省理工的牛人弄出来的,RSA是他们三个人姓的开头首字母组合。
DSA:Digital Signature Algorithm
是Schnorr和ElGamal签名算法的变种。为了让两个linux机器之间使用ssh不需要用户名和密码。所以采用了数字签名RSA或者DSA来完成这个操作。ssh-keygen默认使用rsa密钥,所以不加-t rsa也行,如果你想生成dsa密钥,就需要加参数-t dsa。
生成完成之后,在文件夹下就会有内容:
3、📕 将公钥信息public key添加到码云账户中
打开图中pub后缀的文件,将里面的内容复制到图中的位置,点击确定,输入密码。
在SSH公钥数位置可以看到是否添加成功。
4、📕 使用码云创建一个自己的仓库
完成其中仓库名称的填写,仓库的私有公有可以在创建完成值后进行修改。
5、📕 克隆远程仓库到本地
IDEA中集成Git
1、🚀 新建项目, 绑定Git
如果以上的步骤全部正确的话,我们在创建完成之后可以看到如下的样式,表示Git绑定成功。
.gitignore
文件,表示我们在commit(在IDEA中直接点击commit, 在控制台上输入git commit -m "说明信息"
#表示提交暂存区的内容到本地仓库)的时候需要忽略提交的文件,这样上传的时候就不会上传相关内容,此文件有如下规则
.txt #忽略所有.txt结尾的文件
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/ #忽略build/目录下的所有文件
doc/.txt #会忽略doc/XX.txt 但是不包括doc/server/arch.txt
2、🚀 提交测试
如果想要手动提交,可以在IDEA控制台上输入git add .
(#添加所有文件到暂存区),也可以右击选中文件添加。
3、🚀 将内容推送到远程仓库
(有两种方式可选,一是直接使用IDEA,第二种是使用命令行方式。)
也可以使用命令行的方式。
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] | 删除远程分支 |