文章目录
Git笔记
一、Git概述
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。
官网:https://git-scm.com/
1、架构
![截屏2020-10-11 上午11.14.57](https://tva1.sinaimg.cn/large/007S8ZIlly1gjl83o97aij30xa0csjww.jpg)
文件转移过程:工作区->暂存区->master分支。文件移动至分支后形成正式的版本,暂存区内文件清空。
工作区:开发者重点工作区域,在此创建项目。
版本库(仓库):工作区中有一个隐藏目录.git,这个目录不属于工作区,是git管理的所有内容。
暂存区:直接接收工作区来的文件,在合适的时候commit至分支形成正式版本。
分支:版本库中包含若干分支,提交的文件存储在分支中。
2、仓库
- 对应的就是一个目录,这个目录中的所有文件被git管理起来。
- 以后会将一个项目的根目录,作为仓库。
- 仓库中的每个文件的改动都由git跟踪。
# 新建仓库
# 选择一个目录执行指令
git init
自此生成一个隐藏的.git文件(包含暂存区和分支)。
二、Git环境搭建
官网下载安装后,打开cmd,执行:
git config --global user.name "Your Name" #用户名
git config --global user.email "YourEmail@example.com" #用户名
#查看信息
git config -1
#查看Git版本
git version
以上信息将记录在每次的代码提交中。
三、Git基本操作
1、本地
指令 | 功能 |
---|---|
git status | 查看工作区中文件的状态 |
git add . | 将当前工作区所有文件add至暂存区 |
git commit -m “add two files”(必填项) | 把暂存中的内容放到分支上,“add two files”为版本描述信息 |
2、远程仓库
![截屏2020-10-11 下午2.05.58](https://tva1.sinaimg.cn/large/007S8ZIlly1gjld1r7s96j30q00hodgn.jpg)
# 链接
git remote add origin(标识名) 远程地址
git remote -v
# 上传至仓库
git push 标识名 分支名
# 克隆远程仓库(初时构建本地仓库)
git clone http://...(仓库地址)
# 更新后获取最新...
git pull 标识名 分支名
四、Git分支
1、简介
分支是一个个版本最终存储的位置。
分支是一条时间线,每次git commit形成一个个版本,一个个版本依次存储在分支的一个个提交点上。
![截屏2020-10-11 下午2.40.03](https://tva1.sinaimg.cn/large/007S8ZIlly1gjle1bg3dcj30vk06w0vq.jpg)
2、分支基操
git branch # 查看当前仓库的分支,默认只有master分支
执行git commit时,默认是在master分支上保存的版本。
当代码确实没有问题时,才会将开发分支上成熟的代码版本添加到master分支上。
既保证开发过程中,可以及时记录版本,又保证master分支上每个提交点都是稳健版本。
git branch dev # 创建名为“dev”的分支
git checkout dev # 切换至dev分支
![截屏2020-10-11 下午3.13.14](https://tva1.sinaimg.cn/large/007S8ZIlly1gjlezjgokvj31000cw11n.jpg)
注意:仓库目录下只显示当前分支的内容!!!
3、分支细节
新建分支即为新建一个指针。
新分支指针和当前分支指向同一个提交点。
新分支包含的提交点:第一个提交点到分支指针指向的提交点。
![截屏2020-10-11 下午3.23.50](https://tva1.sinaimg.cn/large/007S8ZIlly1gjlfahww8vj30wo0bqwkg.jpg)
![截屏2020-10-11 下午3.28.19](https://tva1.sinaimg.cn/large/007S8ZIlly1gjlff8payuj30vs0ccn50.jpg)
4、分支提交日志
git log --oneline # 查看当前分支的提交点(简易)
git log # 完整日志
5、分支合并
git merge 分支a # 将分支a合并至当前分支
1)快速合并
若分支A当前的修改,是完全基于分支B的修改而来的,则B分支合并A分支。(少,效果最好)
![截屏2020-10-11 下午3.49.41](https://tva1.sinaimg.cn/large/007S8ZIlly1gjlg1goaoyj30w20qoaom.jpg)
2)三方合并
两个分支的最新快照以及二者最近的共同祖先进行三方合并,合并的结果是生成一个新的快照。
![截屏2020-10-11 下午3.51.24](https://tva1.sinaimg.cn/large/007S8ZIlly1gjlg37enw7j30w80fadoq.jpg)
五、使用SSH-KEY
在使用该方式前确保自己没有使用git clone
命令克隆仓库,如有使用,则删除原仓库,使用SSH链接重新克隆仓库。
-
在终端中输入以下命令
ssh-keygen -t rsa -C 'xieyhxxx@163.com'
-
密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。这里使用的是rsa。
-
同时在密钥中有一个注释字段,用-C来指定所指定的注释,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。所以在这里输入自己的邮箱或者其他都行。
-
-
终端输入
cat /Users/xie.y.h/.ssh/id_rsa.pub # 秘钥存储位置,见上一步
查看秘钥
-
将密钥复制,粘贴到第红色框中
到此即完成配置 -
测试SSH连接:
ssh -T git@github.com
六、团队合作
1、克隆项目到本地
推荐使用ssh协议,用HTTP协议有时会出问题。
![克隆](https://tva1.sinaimg.cn/large/008i3skNgy1gqos9jh1y1j30m80h8gng.jpg)
2、和团队项目保持同步
-
首先查看有没有设置upstream,使用
git remote -v
命令来查看。如下图①
-
如果没有显示upstream,则使用
git remote add upstream 团队项目地址
命令。如上图② -
接着再次使用
git remote -v
,如果如上图③,显示出了upstream,那么就设置好了 -
开始同步。首先执行
git fetch upstream
获取团队项目最新版本。如下图①
-
此时并没有把最新版本合并到你本地的分支上,因此还需要一步。如上图②,当前分支是dev分支,执行
git merge upstream/dev
命令后,会将源分支(upstream/dev)合并到当前分支(dev)。如果你是在本地的master分支上开发,那么在使用该命令前,先切换到master分支。
merge的时候,有可能碰到冲突。需要解决冲突才能继续下面的操作。
3、push修改到自己的项目上
解决冲突后,就可以使用 git push
命令将本地的修改同步到自己的GitHub仓库上了。
注意,在当前所在分支使用push,会push到与这个分支相关联的远程仓库分支。这里dev分支与origin/dev关联,因此push到GitHub上的dev分支。
![截屏2021-05-20 下午12.39.50](https://tva1.sinaimg.cn/large/008i3skNgy1gqoshcij2xj314s0ag0wo.jpg)