git的简介
代码管理工具,其特点是:分布式管理代码,有分支,代码回退,代码合并(团队开发)
安装和配置秘钥公钥
-
先安装软件到本地电脑上
-
配置本地电脑的全局git的账户和邮箱(一个电脑只做一次)
-
git config --global user.name '账户' -
git config --global user.email '邮箱' -
生成本地公钥和秘钥
-
ssh-keygen -t rsa -C '邮箱'连续三次回车,得到一个.ssh文件夹 -
把本机的公钥添加到远程的账户的ssh公钥李,目的是让本地电脑和远程账户进行关联。
-
公钥的位置:
C:/user/admin/.ssh/rsa_id.pub把这个文件使用md程序打开,复制里面的代码,粘贴到远程账户里的公钥
仓库的创建和基础的使用
- 首先在项目中创建一个git仓库
git init 目的是为了在当前的项目中产生一个.git文件夹,一个项目只做一次就行
- 暂存区存储
git add .或git add *如果你只想单纯的把一个指定的文件夹存入暂存区git add fileName
- 把暂存区的内容存入真正的本地仓库
git commit -m '标识内容'
赶集使用-代码回退
- 查看历史的提交记录,目的是为了获取提交的id
git log 只能查看正常提交的记录,对回退后的记录就会丢失
git reflog能查看所有的提交记录
【注意】在git bash 命令窗口里,不可以使用快捷复制和粘贴,只能右键
- 复制commitid用来代码的回退
git reset --hard commitid
查看仓库的状态
git status
本地仓库和远程仓库的关联和上传与下载
- 本地仓库关联远程仓库
git remote add origin 线上的git仓库地址
【注意】仓库地址,前缀必须是git@xxx开头的,不可以是https
- 上传本地仓库到我们远程仓库中【必须联网】
【如果是第一次上传】:git push -u origin "master"把本地仓库的内容上传到远程仓库的master分支上
【如果不是第一次上传】:git push
git的工作流程
-
安装并配置git在电脑上【每个电脑只做一次】
-
在项目中初始化仓库:git init 【每个项目只做一次】
-
每次项目中改变了内容,都要先存入暂存区:git add .
-
再从暂存区存入到本地仓库:git commit -m 'log'
-
再从本地仓库上传到远程仓库:git push
-
总结:git add . > git commit -m 'log' > git push
克隆代码
git clone 项目地址
git仓库权限
-
对于开源的项目,我可以克隆下来,但是没有权限去修改远程的开源项目,因为没有权限
-
如果想修改别人的仓库内容,需要获取权限
代码冲突问题
- 当多人操作同一个文件的时候,在该文件的同一个位置都书写了内容,这个时候git合并策略就会失效,产生代码冲突
解决冲突
-
首先在项目中手动解决冲突
-
再存入本地
-
再上传到远程
【注意事项】
创建分支
-
创建分支:
git branch name -
切换分支:
git checkout name -
第一次上传新分支到远程:
git push origin name以后直接git push -
克隆指定分支:
git clone -b name 仓库地址-b 是--branch缩写 -
删除本地分支:
git branch -D name-D 是--delete缩写 -
删除远程分支:
git push origin -d name-d 是--delete缩写 -
【注意】每次切换分支前,一定要确保当前分支全是存储的状态,对于要删除的分支不能在他的仓库中,删除某个分支的时候,我们不能在当前的分支
-
标签tag管理
-
创建标签:
git tag name -
查看标签:
git tag -
删除标签:
git tag -d name -
上传标签:
git push origin name -
使用tag去回退代码
-
查看tag
git tag -
查看置顶tag详细信息:
git show name获取提交的commitid -
根据id回退代码“
git reset --hard commitid
代码合并
git merge name合并当前分支
团队开发流程
-
一开始,所有人都需要克隆我的仓库到本地
-
接下来是开发代码
-
先把自己的改动存入本地:
git add .,git commit -m '自己的' -
自己的改动存入本地后,先拉取一下远程代码:
git pull为了保持和远程是一样的,都是新的记录 -
【z重点】一定要注意看pull后代的代码提示,如果有冲突要先解决冲突,再存入本地,再上传到远程
【5.1】如果没有提示冲突,意味着git帮我们把远程代码和本地代码进行了合并,然后再git pull上传本地仓库到远程仓库中
- 总结:每次改动项目后,显存本地,在拉取远程,最后提交push
公司里的团队协作
-
首先本地和线上分支都有一个自己的分支:dev-songyu dev-shenyi dev-laowang
-
以后的开发全都在自己的分支中操作:dev-songyu:提交到该分支,然后拉取master分支的代码,左后提交到远程dev-songyu
-
去线上仓库发起一个合并请求,然后项目组长审查代码,项目组长负责把我的分值代码合并到远程dev-songyu
一键快速解决冲突
-
vscode里使用
ctrl+shift+p输入:merge选择 -
保留远程的代码,选择
>merge conflict:Accept All incoming -
保留自己的代码,选择:
>merge conflict:Accept All current