git的诞生
- Linux之父linus 想开源使用代码仓库,又觉得当时的其他的不好用,种种原因下 自己花费15天 用C语言写了Git
- 推荐读书《just for fun》linus的自传 ,很有意思
GIT诞生之前有个SVN
SVN:
- SVN 是一种集中式的版本控制工具。
- 所有的客户端将自己的代码上传到中央服务器,中央服务器的版本数据库会保存上传的各个版本的代码,并进行统一管理。
- 这里注意,客户端本身是不存在版本数据库的,所以,如果中央服务器离线或宕机,则集中式版本控制则无法使用。SVN 是一个增量式的版本控制,它不会将整的保存下来,而只会记录下版本之间的差异,然后按照顺序更新或者恢复特定版本的数据。. 这使得服务端的存储量会非常低。
git:
- GIT是一个分布式的版本控制工具
- 每个人的PC都可以有一个版本库;有很好的容灾性;
先安装一个Windows版
按照官网安装即可
配置
用户名+邮箱(最好跟gitee上一样)
git config –global user.name “自己的用户名”
git config –global user.email “自己的邮箱”
最终在C:\Users\ZXH082600\.gitconfig生成一个配置文件
本地基操
初始化(创建版本库)
git init
在当前文件夹下创建一个git仓库
在创建一个文件 a.txt
ls -l 显示total 0 此时只是新建了一个文件,和git并没有关系
提交文件
git status 查看文件状态
git add
将文件添加到 暂存区(生成index索引文件) - 如果报错
- 解决办法git config –global core.autocrlf false
git commit -m “注释” a.txt (每次commit都必须写清楚注释)
查看文件提交记录
git log a.txt
git log –pretty=oneline a.txt
版本回退
git reset –hard HEAD^
git reset –hard HEAD^ ^^^ (^代表退几步)
版本穿梭
git reflog a.txt 查看历史记录的版本号(很详细)
git reset –hard ee58290 (指针指向版本号)
git reset –hard HEAD~4(回退四步)
撤销修改内容(已修改未add的)
git checkout – a.txt
删除某个git文件
- git rm c.txt
- git commit -m “del c.txt”
谈谈git的三个库(工 暂 本)
Gits实操之分支
- 创建分支
- git branch查看分支
- git branch 分支名
- 切换分支
- git checkout 分支名
- git checkout -b 分支名(创建并切换,如果已存在会报错)
- 合并分支
- 先切换到主分支 git checkout master
- git merge 目标分支名
- 删除分支
- 先切换到主分支 git checkout master
- git branch -d 分支名
冲突
- 冲突一般是指同一个文件同一位置的代码,在两个版本合并时版本管理软件无法判断该保留哪一个版本,因此会提示该文件发生冲突;
分支覆盖冲突
合并时冲突
解决
不可以将其他开发人员的代码 覆盖或者删除;(同步,全部保留;)
- git diff //可以找到发生冲突的文件和内容
- 然后修改冲突文件的内容,再次git add 文件 和git commit (无文件名)提交后,后缀merging消失,说明冲突解决
远程服务器冲突
- 版本不一致 先pull一个最新版本的,diff 冲突文件中的冲突需要手动处理,再重新add/commit/push
idea拉取提交冲突
Gitee云上实操
- 创建ssh key
- ssh-keygen -t rsa -C 你自己用户邮箱
- 成功的话会生成.ssh文件夹
- 打开pub文件。复制全部,复制到gitee公钥
- 连通性测试
- ssh -T git@gitee.com
- 先在本地初始化创建一个git库 git init
- 在gitee中创建一个同名空仓库
- 本地操作提示,git remote与远程建立连接
- 从服务器拉最新的
- git pull origin master
- 新员工入职从远程拉项目
- git clone origin https:xxxxxx.git
- 然后切换到工作目录,开始操作
新员工入职,如何配合工作+取得代码
git一般工作流程
重点:git fetch origin master查看是否版本冲突
- up to date 版本一致,证明没人改过
- ahead of 你的比服务端新,可以提交
- behind 服务器有更改,不能直接push 必须先pull 最新的,然后把自己的代码加上再重新fetch
- pull之后自己手动处理冲突然后再提交
邀请成员协同开发(被动等待邀请)
要点击确认
跨团队协作fork(主动fork)
请求外部专家帮助解决bug
- 找到那个项目,点fork
- git clone /add/push等
- 新建pull requests
- 主项目端会收到审查和测试
- 点文件查看diff
- 合并分支
仓库删除
点击管理–>删除项目—>验证信息
IDEA整合
Git配置忽略文件
- 自己的用户目录下创建 git.ignore
- 规则https://github.com/github/gitignore
- 设置找到git 配置
- 安装gitee插件
- 版本控制中有个gitee
- 创建一个普通maven项目
- add /commit
- 同步到云端,右击git,点share