1、介绍
版本控制:本地和远程都有版本控制、操作记录。
2、git与svn
git:具备离线工作能力,每个人的电脑都有一个远程仓库的分身,分布在每台电脑的版本控制(分布式),github做为中央仓库。
svn:每人只是拿到中央仓库的拷贝,本地没有仓库,必须要联网,一旦与中央仓库断连,无法控制版本。
3、使用
3.1 初始化
第一步 设置用户签名
加上 global防止每次更换文件夹都要重新定义name与email
C:\Users\Administrator中gitconfig文件查看设置内容
git config --global user.name "name"
git config --global user.email "邮箱格式"
第二步
git init 出现 .git文件(记录版本)后本文件夹初始化成功
3.2 工作机制
3.3添加暂存区
git add 文件名 单独文件添加到暂存区
git add 文件夹/ 单独文件夹 件添加到暂存区
git add . 或者 git add --all 所有文件添加到暂存区
git status 查看文件状态
文件状态为绿色表示在暂存区
git rm --cached 文件名 从暂存区删除
文件状态为红色表示文件只在工作区
3.4提交本地库(也叫历史区)
git commit -m "第一个功能完成"
此时暂存区清空
git log 查看提交历史 只能查看到head指针及之前的提交记录,无法查看之后的记录
注意:
如果输入git commit ,忘记备注,直接回车
会进入vim编辑器,此时要输入i,进入insert模式,
然后输入备注,完成后esc 然后:最后wq才能退出
3.5版本穿梭
git reset --hard HEAD^ 回退到上一次提交版本 指针往前移动 回到工作区
git reset --hard HEAD^^ 回退到上上一次提交版本
git reset --hard HEAD~2 回退到上上一次提交版本
git reflog 可以查看所有操作记录
git reset --hard 0cdbfbe 回到具体的版本 后面为标识符(前7位)
git reset --soft HEAD^ 回到上一个版本,但是版本在暂存区中
作用:
1、可以进行提交注释的重写
2、bug修复(此时有两个功能,功能1开发完毕,功能2还没提交,但是发现功能1出了bug,先将功能一退到
暂存区,然后修复功能一代码,然后只提交功能一的代码到暂存区合并,然后提交仓库,这样仓库中只有一条记录)
git revert HEAD 回退上一个版本,但是新增一条提交记录,属于指针往后移动
实际开发最好使用git revert,这样的话在向gitee提交时候不会报错
3.6初识分支
尽量每个功能都是一个独立分支
git branch 查看分支
git branch 分支名字 创建分支
git checkout list 切换分支 每次切换前一定要将本次代码提交到本地库
开发完功能后 切换到master分支
git merge list 合并到当前分支 相当于把head指向往前移动,指向最新
git branch -d list 删除没用分支
3.7 分支合并冲突
3.8初识团队协作
利用远程仓库
git remote -v 查看远程地址
git remote remove origin 删除远程地址
git push origin master:master 下面为简写
git push origin master 将本地master推送到远程master
git pull origin master 拉取远程master代码到本地
git push -u origin master 表示记录推送到远程master 以后就可以使用git push推送到远程master
并且使用git pull拉取远程代码
首次推送需要输入账号密码,成功后凭据添加
自己练习:远程修改文件,本地也修改相同文件,然后从远程pull拉取,模拟冲突。
解决:先到文件中解决冲突,然后提交到本地库,然后提交到远程,实现本地与远程同步。
注意:尽量不要修改远程仓库
3.8团队协作与冲突
git clone https://gitee.com/L-liumeng/liumengproject.git 从远程仓库拉取整个代码
正常提交,没有文件冲突的情况
有冲突情况(两人修改相同文件),后提交人向远程提交时会失败,需要先pull拉下代码,然后解决冲突,最后提交所有文件
3.9团队协作的分支
git push origin login:login 本地login分支向远程仓库提交login分支
git push origin login (简写)
克隆只能克隆主分支master
要想从远程拉取其他分支需要
git pull origin login
切换并创建与远程关联的分支
git checkout login
基于当前分支继续开发
然后提交本地仓库,最后向远程login提交
add
commit
git push origin login
假如在远程创建了一个bugfixed分支
现在要删除bugfixed分支
git push origin :bugfixed 用本地空 覆盖
3.10git集成在vscode
首先要先安装git,然后再vscode中才能使用
gitignore文件: