万般皆苦,唯有自渡
一、GIT
git是一个用于帮助用户实现版本控制的软件,达到多人协同开发的目的。
git是分布式的,每一个客户端均可以作为服务器为其他客户端提供代码。
git有强大的分支管理机制,可以在子分支上开发,将最终的成果同步到主分支即可。
二、安装(环境为MAC)
三、工作流程


三、搭建本地git仓库
将已有的文件夹作为git仓库
cd 目标文件夹内部
git init
在指定目录下创建git仓库
cd 目标目录
git init 仓库名
常用指令
- 查看仓库状态
git status 【查看仓库状态】
git status -s 【查看仓库状态的简约显示】
- 工作区操作
写代码
空文件夹不会被git记录
- 工作区内容提交到暂存区
git add . 【添加项目中所有文件】
git add 文件名 【添加指定文件】
- 撤销工作区操作:改、删
git checkout . 【撤销所有暂存区的提交】
git checkout 文件名 【撤销某一文件的暂存区提交】
- 撤销暂存区提交:add的逆运算
git reset HEAD . 【撤销所有暂存区的提交】
git reset 文件名 【撤销某一文件的暂存区提交】
- 提交暂存区内容到版本库
git commit -m "版本描述信息"
- 撤销版本库提交:commit的逆运算
回滚暂存区已经提交到版本库的操作:
查看历史版本:
git log
git reflog
查看时间点之前|之后的日志:
git log --after 2018-6-1
git log --before 2018-6-1
git reflog --after 2018-6-1
git reflog --before 2018-6-1
查看指定开发者日志
git log --author author_name
git reflog --author author_name
回滚到指定版本:
回滚到上一个版本:
git reset --hard HEAD^
git reset --hard HEAD~1
回滚到上三个版本:
git reset --hard HEAD^^^
git reset --hard HEAD~3
回滚到指定版本号的版本:
git reset --hard 版本号
eg: git reset --hard 35cb292
- 过滤文件
.gitignore 文件
1)在仓库根目录下创建该文件
2)文件与文件夹均可以被过滤
3)文件过滤语法
------- 过滤文件内容 -------
文件或文件夹名:代表所有目录下的文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
目录/文件或文件夹名:代表特定目录下的文件或文件夹被过滤
ps:各大远程仓库如git,码云都自带.gitignore,在创建仓库的时候选择一下即可。
四、连接远程仓库

代码托管的网站:github,Bitbucket,码云
以码云为例:
1、注册并登录:https://gitee.com/
2、创建仓库
3、本地仓库与服务器仓库建立连接
4、配置线上的账号和邮箱
全局配置:
git config --global user.name "用户名"
git config --global user.email '用户邮箱'
注:在全局文件.gitconfig新建用户信息,在所有仓库下都可以使用
局部配置:
git config user.name '用户名'
git config user.email '用户邮箱'
5、在本地初始化仓库(git init),并完成项目的初步搭建(项目架构)(一般都是项目负责人完成项目启动)
6、采用 https协议 或 ssh协议 与远程git仓库通信提交提交代码(一般都是项目负责人完成)
1)https协议方式,无需配置,但是每次提交都有验证管理员账号密码
git remote add origin https://gitee.com/wprw/test.git # 配置远程源
git push -u origin dev # 提交本地仓库到远程源,🐷注意这里本地仓库分支要和远程仓库分支同步,一般提交到dev分支上
2)ssh协议,需要配置,配置完成之后就可以正常提交代码
git remote add origin git@gitee.com:wprw/test.git # 配置远程源
git push -u origin master # 提交本地仓库到远程源
3)查看源及源链接信息(第一次把本地提交到远程时先查看下有没有源)
git remote
git remote -v
4)删除源链接
git remote remove 源名字
注:origin远程源的源名,可以自定义;master是分支名,是默认的主分支
7、远程仓库生成公钥
1)“码云”参考帮助文档:https://gitee.com/help/ -- 仓库管理 => 公钥管理 => 生成/添加SSH公钥
ssh-keygen -t rsa -C "6161@qq.com"
2)“github”参考帮助文档:https://help.github.com/cn/articles/using-ssh-over-the-https-port
8、git协同开发
管理员(组长)
(1) 管理员配置与线上账号密码系统的本地全局账号密码
git config --global user.name "wpr"
git config --global user.email "wprw@163.com"
(2) 本地初始化git仓库(可以建立一个项目架构)
1)创建项目
2)进入项目目录初始化仓库:git init
3)提交代码到本地版本库
(3) 创建一个远程空仓库
(4) 将本地版本库同步到远程仓库
1)在本地仓库内添加远程仓库源,源名默认就采用origin,就采用https协议即可: git remote add origin https: //gitee.com/wprw/test.git
2)将本地版本库提交到远程版本库,需要远程仓库账号密码:git push -u origin master
(5) 添加开发者提供的公钥到 个人公钥 并非是 公钥,并给开发者提供远程仓库SSH地址
仓库 => 管理 => 添加公钥 => 添加个人公钥
SSH地址:git@gitee.com:wprw/test.git
开发者
(1) 要参与开发的成员配置本地全局账号密码
git config --global user.name "wpr"
git config --global user.email "wprw@163.com"
(2) 生成本机的SSH公钥提供给管理员
ssh-keygen -t rsa -C "wprw@163.com"
(3) 🌸在本机任意合适位置clone远程仓库到本地
git clone git@gitee.com:wprw/test.git
(4) 进入本地项目仓库进行开发,可以查看远程源
cd test
git remote -v 注:origin git@gitee.com:wprw/test.git (fetch) & (push)
(5) 开发过程中要提交新功能时,🌸一定要遵循先拉取(pull),再提交(push)
1)提交新功能(先提交,提交后拉取,可能就会出现冲突)
git add .
git commit -m '提交新功能的信息说明'
2)拉取远程仓库(不管本地是否已经和远程同步,每一次提交前都必须拉取)
git pull 源名 分支名 => git pull origin dev
3)提交到远程仓库
git push 源名 分支名 => git push origin dev
8、多分支开发
(1) 创建分支
git branch 分支名
(2) 查看分支
git branch
(3) 切换分支
git checkout 分支名
(4) 创建并切换到分支
git checkout -b 分支名
(5) 删除分支
git branch -d 分支名
(6) 查看远程分支
git branch -a
不太认真的总结:
git init 【初始化】
git status 【查看当前文件夹的状态(红色表示修改的但未被管控的,绿色表示已经被管控的)】
git add 文件名 【对指定文件进行版本控制(变绿,准备就绪)】
git add . 【对当前文件夹下的所有文件及子目录进行版本控制(变绿,准备就绪)】
git commit -m '详细的版本(描述)信息' 【创建提交记录(版本),一般公司会要求描述信息很详细,先看看别人的描述怎么写的(参照最详细的最长的)】
git log 【查看版本记录,只能看当前往后的】
git reflog 【查看版本记录,所有】
git reset --hard 提交记录(版本号) 【通过log拿到版本号,回滚到指定版本的状态】
git checkout --文件夹名 【变回修改前的原始状态】
分支结构开发命令:
git branch 【查看分支列表】
git branch 分支名 【在当前分支上再创建分支,就是从你现在分支上copy一份放到你新建分支上】
git branch -d 分支名 【删除指定分支】
git checkout 分支名 【切换到指定分支下】
git merge 分支名 【把指定分支合并到master中,这里要注意,如果两个都修改了同一行代码,会产生冲突】
远程托管命令总结:
git remote add origin 代码地址 【给代码地址起别名】
git push origin dev 【把代码推到远程仓库】
git clone 代码地址 【把代码从远程仓库克隆下来】
git pull origin dev 【把dev代码拉下来】== git fetch origin dev + git merge origin/dev
git pull origin master 【把master代码拉下来】== git fetch origin master + git merge origin/master
git rebase origin/dev 【替换merge,不会出现分叉记录】
版本命令总结:
git tag -a v1.0 -m "版本介绍" 【本地创建tag】
git show v1.0 【查看】
git tags -n 【查看本地tag】
git tag -1 'v1.4.2.*' 【查看本地tag,模糊匹配】
git tag -d v1.0 【删除tag】
git push origin :refs/tags/v0.2 【更新远程tag】
git checkout v.10 【切换tag】
git fetch origin tag v1.2 【获取版本】
git push origin --tags 【把版本推到远程仓库】
git pull origin --tags 【把版本从远程仓库拉下来】
git clone -b v1.0 【把某个版本代码拉下来】
git checkout 【工作区撤回】
git reset 文件名【暂存区撤回到工作区】
git reset —hard 版本号【版本库撤销】
touch.gitignore【写过滤条件的文件】
touch 文件名 【表示新建文件】
网友评论