就是一个软件可以记录每次提交的代码,防止代码丢失可以解决代码冲突
常见的git、svn
常用远程仓库:码云gitee(国内)、gitlab(开源项目)、github(国外)
下载地址:https://www.git-scm.com/
验证: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 # 移除本地仓库关联的远程仓库 可以重新绑定)
1.首次使用
初始化个人信息
git config --global user.name ‘用户名’
git config --global user.email ‘邮箱’
2.克隆
git clone 仓库地址
3.进入项目开发
cd 项目名
1.生成密钥
ssh-keygen -t rsa -C “邮箱”
2.复制公钥
cat ~/.ssh/id_rsa.pub
3.配置到远程仓库
举例gitee:设置 ->SSH公钥 -> 添加公钥
4.克隆
git clone 仓库地址
5.进入项目开发
cd 项目名
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 在里面输入要忽略的文件,不会提交到远程仓库(主要针对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 分支名 (强制删除分支)
切换分支代码丢失
解决:
第一种:切换分支前,git add . && git commmit -m ‘备注’
第二种:存到临时区,git add . && git stash 使用的时候再弹出来 git stash pop(弹到当前分支)
大家普遍克隆的是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】查看冲突解决冲突