Git
1. 版本控制简介
用来升级。
基本功能:
团队协作开发,数据备份,历史记录,分支管理(备份,在备份上改,之后和原工程合并)
常见的版本控制软件
集中式的版本控制,以前的上传的数据,版本信息只能存于远程服务器,本地无备份。有cvs svn vss
分布式版本控制,本地有本地的版本,所有客户端提交的代码本地有记录。有Git。
Java主要用svn,git
Git官网:git-scm.com可以下载最新版git
git三个区域
(本机上的)
- 工作区:本地文件夹,存代码的文件夹
- 缓存区:git临时存储位置,缓存区是工作区---->本地库的中间层
本地库:存储客户端本地所有提交的历史记录
git服务器 - 局域网服务器:gitlab,需要公司自己在Linux上搭建,不开源,安全性高。
- 外网服务器:github 或gitee码云
博客写理论,+github代码=完美。
2. git安装
安装网址
注意一下,默认不是vim
git的命令是基于Linux,使用Vim做为默认的编辑
不需要配置额外环境变量,第一个就够了
本地d盘新建文件夹,用来测试练习
到当前目录打开鼠标右键打开get bash
$ pwd —查看当前所在位置
3. git初始化
Master是主分支
$ git init .git是隐藏文件
4. 设置签名
标志用户:账号+邮箱,邮箱不需要真实存在
项目签名:每个项目可以有一个独立的签名
全局签名(系统级别签名)
git config --global user.name 用户名(两个减号)
git config --global user.email 邮箱
$ cd ~ -----回家
只有设置了全局签名,家目录下才有.gitconfig文件
$ cd - --------------回来
5. 查看状态
$ git status ---------查看当前状态,在主分支,没有提交。
新建a.text ,内容aaa,git的状态就变了,untract file未追踪的文件
新建文件,这个文件不受git版本控制
6. git add
将工作区的文件添加到缓存区,没有提交,可用rm撤销
Rm撤销
再add,去提交
7. git commit
不写注释说明就跳转到以下页面
i键,vim方式编写说明文字
将暂存区的数据存储到本地库,进入vim写注释,写了注释后,提示提交成功。
查看状态,回到干净状态
Vim给a.text加一行
查看状态
$ git commit -m “modify a.text by add bbb” a.text --------- -m “注释说明”
提交
状态变干净
8. 查看版本日志
git log 查看提交日志
git log --pretty=oneline 简易查看提交日志
git log –oneline 更简易地查看日志
head -> master指的是:当前分支指向的是master分支。
git reflog,最常用,可以查看所有分支的所有操作记录,包括已经被删除的 commit 记录和 reset 的操作,
例如执行 git reset --hard HEAD~1,退回到上一个版本,用git log则是看不出来被删除的commitid,
用git reflog则可以看到被删除的commitid,我们就可以买后悔药,恢复到被删除的那个版本。
9. 版本还原
git rest --hard 版本号 -----------》版本号用git reflog输出结果的前七位就行
查看状态
回到b
删除a.text,只要.get目录正常,就可以用git reset还原
10. 注册两个账号
11. 创建远程仓库
12. 设置远程仓库别名
$ git remote –v
复制链接https://github.com/benjmin007/mygit01.git
$ git remote add origin https://github.com/benjmin007/mygit01.git
Origin为别名,以后就不用输网址了,
fetch抓,push推(多次),clone仅第一次下载(1次),pull拽下来(多次)
13. 推送
$ git push origin master
本地库的数据推送到远程,输出:
可以看到github上有了a.text
回主页,可以看到仓库
14. 克隆
再建个github账号,把本地git退出文件夹
克隆
其他人参与项目开发,第一次将远程库的数据下载的本地,只做一次
克隆以后,本地仓库和远程地址都已经配置好了
$ git clone https://github.com/benjmin007/mygit01.git
可查看到ls下有clone下来的项目
进clone下来的目录可以看到有master标识
新建一个b.text,放入clone下来的工程,接着,编写b.text,并把b.text添加到git,commit b.text
,这样,b.text就在本地的仓库里了。
本地的任何操作都是可以的,不能提交到远程库,需要仓库的创建者要求加入团队
删除本地凭证,以防干扰模拟两个账号
没有许可,push不了
让仓库的创建者邀请clone玩家。后者才能push
创建者在下图邀请
输入对方账号
生成要求连接,有私下联系方式就复制粘贴给他
内容如下
https://github.com/benjmin007/mygit01/invitations
对方也会收到邮件
对方点开邮件邀请 view invitation
现在就可以push上去了
查看仓库,发现文件上去了
15. 拉取
git pull origin master ----------》master是个分支
16. 解决冲突
冲突原理图
解决方案,先拉下来
再合并
打开提示的冲突文件
所以,程序员上班前pull,下班前push
Add+commit,这里不支持直接commit
冲突标识消失
输出
Zs再去pull也不会报错
服务器版本 005
zs本地库 005
ls本地库 005
zs commit006 push服务器006
ls commit push失败 pull 解决冲突,编辑文件,本地提交 push