概述:版本控制管理工具
作用:代码管理;
- 备份多个版本,省时间省空间
- 可以恢复到以前的版本
- 解决代码冲突问题
- 可追溯问题查询修改人和修改时间
- 进行权限控制
下载:官网下载安装
测试安装是否成功git -- version
仓库下载代码
国内:gtiee码云https://gitee.com/
国外:githubhttps://github.com/
日常操作:
-
下载项目:git clone "项目地址"
-
创建仓库:登陆git工具=》新建仓库(填写信息)提交
-
将本地代码提交到远程仓库
需要本地运行终端配置用户名和邮箱javascriptgit config --global user.name "你的用户名称" git config --global user.email "你的邮箱"
远程仓库和本地机器连接
设置=》SSH公钥
生成SSH公钥https://help.gitee.com/base/account/SSH公钥设置
终端运行:ssh-keygen -t ed25519 -C "你的邮箱"
回车 y 中间通过三次回车 确定
运行:cat ~/.ssh/id_rsa.pub
把终端中运行后的代码粘贴复制到"SSH公钥"中配置 -
上传代码:
提交所有代码到中转站git add .
(注意add后加空格点)
提交所有代码到本地仓库git commit -m '提交到注释'
提交本地仓库到gitee/github远程仓库git push
面试题:svn与git的区别?
svn集中式管理,git是分布式管理,有本地仓库(暂缓区);git速度快
开发中git命令
-
初始化仓库 ===>git init
-
查看配置 ===>git config -l
进公司做项目,必配user.email 和 user.name
javascriptgit config --global user.name "你的用户名称" git config --global user.email "你的邮箱"
-
查看状态 =>git status
红色的=》没有被git管理绿色的===》存储在版本库暂缓区
-
添加到暂缓区 ===> git add .
.代表所有文件
指定某一个文件 git add index.js
-
添加到分支中 ===> git commit -m '注释内容'
-
查看修改文件 ===> git diff
查看某一个文件:git diff index.js
查看所有文件 :git diff
-
查看修改历史 ===> git log
-
查看修改历史【简单形式】 ===> git reflog
-
回到之前的版本
回到上一个版本:git reset --hard HEAD^
回到指定版本 :git reset --hard 版本号
解决团队开发中代码冲突问题
修改不是同一个文件时先把远程仓库代码拉下来,在提交
javascript
git pull
git push
修改同一个文件时:git add .;git commit -m '修改内容描述';git push;提交不上去报错,先把拉取代码git pull,然后手动修改代码冲突报错的乱码删除掉,然后判断或和同事商量代码是合并还是修改,再次提交git add .;git commit -m '修改内容描述';git push
分支
分支独立,分支之间互不影响
默认分支=》master·
查看本地分支=》git branch
新建本地分支=〉git branch 新分支名称(新分支会继承旧分支的内容)
切换分支=》git checkout -b 分支名称
查看远程仓库分支=》git branch -r
本地分支提交远程仓库分支=〉git push --set-upstream origin 分支名称
删除本地分支=》git branch -d 分支名称(不能删除你当前所在的分支)
删除远程仓库分支=〉git push origin --delete 分支名称
合并分支=》当前在master分支时,git merge 分支名称,master+=分支,合并分支会解决冲突手动修改代码冲突报错的乱码删除掉,然后 查看状态git status没有问题,git add .;git commit -m '合并分支描述';git push;
gitflow工作流(中,大型项目)
master =》用于保存上线版本代码,创建了dev分支
develop =〉用于保存相对稳定版本的代码,所有的feature都是dev分支创建的
在develop合并代码git merge origin/feature/longin;git merge origin/feature/list;git add .;git commit -m '合并分支描述';git push;
feature =》用于开发某几个功能,不同的功能可能会创建不同的分支 ***feature/login ***feature/list
release =》用于代码上线前的准备(测试,bug修复),是dev创建的 ***release/v1.0
bugfix =》用于修复不紧急bug ,在release创建
hotfix =》用于修复紧急bug,在release创建