一、版本控制软件
就是一个软件可以记录每次提交的代码,防止代码丢失可以解决代码冲突
常见的git、svn
二、仓库(远程)
常用远程仓库:码云gitee(国内)、gitlab(开源项目)、github(国外)
三、git安装
验证:git --version
四、克隆仓库的两种情况
仓库有代码(开发人员)
git clone 仓库地址
仓库没有代码(老大)
什么都没有,连个readme都没有(按操作步骤,上传文件)
git init 生成.git目录
git remote add origin 远程仓库地址 #本地仓库关联到远程仓库
git add .
git commit -m ‘备注’
git push --set-upstream origin 分支名
刷新远程仓库查看
(git remote remove origin # 移除本地仓库关联的远程仓库 可以重新绑定)
五、克隆仓库的两种方法
一、走Https(超文本传输协议)
1.首次使用
初始化个人信息
git config --global user.name ‘用户名’
git config --global user.email ‘邮箱’
2.克隆
git clone 仓库地址
3.进入项目开发
cd 项目名
二、ssh(一次声明永久使用)
1.生成密钥
ssh-keygen -t rsa -C “邮箱”
2.复制公钥
cat ~/.ssh/id_rsa.pub
3.配置到远程仓库
举例gitee:设置 ->SSH公钥 -> 添加公钥
4.克隆
git clone 仓库地址
5.进入项目开发
cd 项目名
六、隐藏文件.git(非常重要)
1-config文件存放了push提交的仓库地址
2-码云/github/gitlab仓库中所有的数据信息
七、后续增删改
1.开发代码(开发区域)
2.添加到暂存区 git add .(开发区域 -> 暂存区)
3.提交到本地区域 git commit -m ‘备注’ (暂存区 ->本地区域)
4.提交到远程仓库 git push(本地区域 -> 远程区域)
查看文件状态:git status
git push 本地区域的数据推到(上传)远程仓库
git pull 远程仓库的数据拉到本地"合并"
git fetch 远程仓库的数据拉到本地"不合并"
八、忽略文件.gitignore
.gitignore 在里面输入要忽略的文件,不会提交到远程仓库(主要针对node_modules等)
九、代码冲突
问题:git push 报错,原因文件冲突
解决:
1.git pull 从远程仓库拿到最新的代码
2.git status 查看状态,根据提示去修改冲突文件
3.重新git add . / git commit -m ‘’ / git push
十、日志回滚
查看日志
1.git log(详细但条数少、回车查看更多)
2.git log --pretty=oneline(相对没有1详细,格式化后的)
回滚
git reset --hard HEAD^ 回退到上个版本
git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard commit_id 回退到指定版本*(很长,唯一标识前7个字母即可)
十一、分支管理
查看分支
git branch 查看自己创建的(克隆的仓库就算创建的第一个分支)
git branch -r 查看从远程缓存的分支
git branch -a 查看1+2
创建分支
git branch 分支名 (基于当前分支)
git branch 新分支名 旧分支名 (基于指定分支)
切换分支
git checkout 分支名
创建并切换分支
git checkout -b 分支名 (基于当前分支)
git checkout -b 新分支名 旧分支名(基于指定分支)
删除分支
git branch -d 分支名 (删除分支)
git branch -D 分支名 (强制删除分支)
神坑1
切换分支代码丢失
解决:
第一种:切换分支前,git add . && git commmit -m ‘备注’
第二种:存到临时区,git add . && git stash 使用的时候再弹出来 git stash pop(弹到当前分支)
神坑2
大家普遍克隆的是dev 因为它是默认分支,然后老大说一句话 让你拉去login分支代码开发
基于码云的login分支开发代码(即基于远程创建分支)
解决:
git branch login 错误的 这不是基于码云
git branch 新分支名 指定分支名
git checkout -b login 错误的 这不是基于码云
git checkout -b 新分支名 指定分支名
留心
1.第一次创建分支push到远程仓库时间较长
git push --set-upstream origin 分支名
2.基于旧分支创建的新分支,新分支有代码(传值)
新旧分支互不影响
3.切换分支必须git add. && git commit或者git add . && git stash(否则代码丢失)(神坑1)
十二、可视化图形管理软件
常用
vscode 插件 编辑器自带
webstrom 编辑器自带
sourcetree 部分公司用
https://www.sourcetreeapp.com/
git gui 没人用
功能
1代码增删改查
2解决冲突(代码拉下来,在手动解决,最后提交)、日志回滚
3分支管理
十三、其他
临时区
git stash 存到临时区
git stash list 查看临时区列表
git stash pop 弹出临时区
标签
git tag
git tag 标签名
git push origin 标签名
git tag -d 标签名
合并分支
git merge 分支名 指定分支合并到当前分支
git pull 远程仓库的数据拉到本地"合并"
git fetch 远程仓库的数据拉到本地"不合并"
git pull = git fetch + git merge 分支名
留心:合并意味着可能存在冲突或者修改 因此每次合并后必定【git status】查看冲突解决冲突