版本控制器:集中式、分布式
集中式:CVS/SVN等 缺点:必须联网,(代码必须推送到中央服务器)
分布式:Git等 不必联网,速度快,安全性很高,(每个人的电脑都有完整的版本库)
Git的使用
一:安装:
linux安装:
git (查看是否安装)
Debian或Ubuntu Linux:sudo apt-get install git (安装)
windows安装:
①官网下载
②输入用户名、邮箱
git config --global user.name '用户名'
git config --global user.email '邮箱'
--global:这台机器上所有的Git仓库都使用这个配置;也可对个别仓库指定用户名和邮箱
二:创建版本库(仓库)(目录)
①寻找一个合适的位置,创建空目录(如果是window,避免包含中文目录)
mkdir 目录 (创建一个目录)
cd 目录(进入目录)
pwd(查看当前位置)
②将空目录变成git可以管理的仓库
git init(初始化,本地文件夹同级会出现一个隐藏的.git文件夹用来跟踪管理版本库)
ls -ah(查看隐藏的版本库)
③将文件添加到版本库(文件必须放到创建的版本库的目录下)
git add 文件名1 文件名2(把文件添加到仓库)
git commit -m '注释'(把文件提交到仓库)
三:版本修改
修改文件后
git status(查看仓库当前的状态)
git diff 文件名(对该文件做了哪些修改)
git add 文件名(提交修改、添加到版本库)
git status(查看状态)
git commit -m '注释'(提交到版本库)
git status(查看状态会提示当前没有需要提交的修改,而且,工作目录是干净(working directory clean)的)
撤销修改
add前,仅撤销工作区修改(撤销修改就回到和版本库一模一样的状态):git checkout --文件名
add后commit前 撤销暂存区修改(撤销修改就回到添加到暂存区后的状态):(1)git reset HEAD 文件名(回退)(2)git checkout --文件名(撤销)
commit后推送到远程库前:版本回退(参考版本回退)
已推送到远程库:自求多福。。。
四:版本回退
git log(显示从最近到最远的提交日志)
git log --pretty=oneline(显示从最近到最远的提交日志,输出版本号(commit id),文件名,更清晰)
git reset --hard HEAD^(回退到上一个版本)
git reset --hard HEAD^^(回退到上上一个版本)
git reset --hard HEAD~100(回退到上100版本)
cat 文件名()
git log(现在版本库的状态)
git reset --hard 版本号id(指定版本号回退(可以不写全))
git reflong(查看命令历史)
五:工作区和暂存区
工作区:电脑中能看到的目录
暂存区:版本库中的stage(index),版本库自动创建的分支master,指向master的指针HEAD
git add (将文件添加到暂存区)
git commit(将文件从暂存区提交到当前分支)(文件必须先通过git add 添加到暂存区后通过git commit才能提交)
六:删除文件
git rm 文件名(删除)
git commit -m '注释'(提交)
误删:
git checkout --文件名(恢复,用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”)
(只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容)
七:添加远程仓库(github)
在github上创建一个版本库
关联一个远程库:git remote add 库名 git @server-name:用户名/repo-name.git
推送:git push -u origin master (第一次推送master分支的所有内容)
(此后,每次本地提交后,只要有必要,就可以使用命令:git push origin master)
克隆版本库
git clone 地址(克隆改地址对应的版本库)
八:分支管理
(一)创建与合并分支
只有主分支:master
创建分之后:dev
在dev分支上操作完提交后:
合并分支:
删除dev分支:
git branch(查看分支)
git branch 分支名称(创建分支)
git checkout 分支名称(切换分支)
git checkout -b 分支名称(创建并切换分支)
git merge 分支名称(合并某分支至当前分支)
git branch -d 分支名称(删除某分支)
(二)分支冲突
在不同过的分支上均对同一文件进行修改
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
第一次修改并提交(commit后),切换到另一分支再次修改并提交(commit后),会有冲突
git status (告诉我们冲突的文件)
修改冲突后再提交
git log --graph --pretty=oneline --abbrev-commit(可以看到分支的合并情况)
如:
删除分支:
git branch -d 分支名称
详情可咨询:https://www.liaoxuefeng.com/