版本控制器
1分布式版本控制器 git
可以独立存在于本地,不需要网络
中央版本控制器 : svn
必须存在两个端 服务端和客户端 典型的C/S机制
2 git与svn的区别
git每个客户端都可以创建分支,svn必须由服务端创建
git在没有网络情况也可以提交,svn则不能
git比svn更占空间,因为git在每个客户端都保留了所有的版本历史,而svn只在服务器中保存了历史版本记录,在客户端是没有保存本地版本历史的
3 git --version 可以查看是否已经安装git
git init 初始化仓库
初始化成功以后会生成.git 目录,里面包含了整个版本库的信息
目录文件
HEAD 文件指示目前被检出的分支
description 用来显示对仓库的描述
config 文件包含项目特有的配置选项
Info 目录包含一个全局性排除文件
hooks目录包含客户端或服务端的钩子脚本
index文件保存暂存区信息
objects目录存储所有数据内容
refs目录存储分支的提交对象的指针
4基础配置
git config user.name 查看是否配置昵称
git config user.email 查看是否配置邮箱
git config --global user.name ‘你的昵称’ 设置昵称
git config --global user.email ‘你的邮箱’ 设置邮箱
5 修改配置信息
⒈命令行修改配置
git config --global --replace-all user.name ‘你的昵称’
git config --global --replace-all user.email ‘你的邮箱’
⒉修改配置文件
.gitconfig 如果里面的name email 多余删除不需要的即可
git config --list 可查看配置信息
6 获取远程仓库
git clone 版本库地址 首次拉取
git pull 拉取代码
7 ssh
ssh-keygen生成公钥跟私钥(保证用户目录下存在.ssh文件夹)
然后将公钥上传到服务器
8
git status 查看文件改动
当执行这个文件后的状态
Untracked 一般是新增的文件
Modified 文件已修改
deleted 文件已删除,本地删除,服务器未删除
renamed 文件名称被修改
当git commit以后 使用git status 没改动文件的原因:
因为你已经将改动的文件都提交到版本记录中,而git status 是基于为提交的代码最后一个版本比较的,当你提交后,两个区域的文件内容一致,所以就显示没有改动。
无意中修改的文件想还原 git checkout 文件
9 git add 文件 添加指定文件到暂存区
git add . 一次性提交文件到暂存区
git commit -m ‘备注’ 将代码提交到本地仓库
git push 将文件推到远程
10 git diff
工作区:当前正在编辑的文件,还没有通过 git add 命令暂存起来
暂存区:文件已经通过git add 提交,但还没有通过 git commit提交
git diff 当前分支 需要比较的分支 --stat 查看两个分支差异
git diff 当前分支 需要比较分支 文件 某一文件具体修改了哪些东西
git diff 分支名 文件名 查看所有的修改
11 忽略文件可以加入 .gitignore
12 git branch
git branch 查看本地分支 绿色代表当前所属分支
git branch -a 查看本地的分支和远程的所有分支
git checkout 分支名(当分支名跟远程分支名相同时会在本地创建并切换)
git checkout -b 分支名 新建一个远程和本地都不存在的分支
这样创建以后需要把本地的分支推送到远程
git push --set-upstream origin 远程分支 (远程分支跟本地分支关联)
git merge 分支 合并代码
git log 查看记录
git branch -d 分支 普通删除分支
git branch -D 分支 强制删除分支
13 git reset HEAD^ 撤销上一次提交
git reset 版本号 撤销到指定版本
14删除远程分支git push origin --delete 分支名
15将本地的东西强推到远程(版本回退时会用到) git push -f
16 git fetch 拉取远程仓库信息(不会自动进行合并)
git reset --hard origin/分支名 将远程仓库完全覆盖本地仓库
17 git reflog show git操作日志
18 git revert 撤销某个版本的代码,然后在当前分支增加一条版本新记录
git revert 只会撤销指定版本的代码,而不是指定版本后的代码
19 git merge
合并时先切换到主分支,然后将需要合并的分支合并到主分支上面
解决冲突:当有冲突时把冲突解决完以后 git add . && git commit -a 不需要 -m
20钩子
钩子:提交版本时触发的事件,触发事件的动作就是钩子
分类:客户端和服务器端
21 git merge git rebase区别
git merge 合并代码后版本记录会按照时间顺序排序,并自动产生一个 merge branch版本
git rebase 合并代码后版本记录会将目标分支的版本放在后面,然后再将当前分支的版本记录放在前面
22 git cherry-pick 将某个分支中的某个版本复制到当前分支
23 git stash 暂存 git stash pop 将暂存的东西取出