Git:目前世界上最先进的分布式版本控制系统
安装Git
- 在命令行窗口输入git检查系统是否安装git
- Windows安装git,直接从官网下载安装程序
- 安装完成后在命令行输入
git config -global user.name””
git config -global user.email””
创建版本库
- 创建空目录
- mkdir命令:创建空目录
- pwd命令:显示当前目录
- 通过git init命令把目录变成Git可以管理的仓库
注意:目录名及父目录名最好不要出现中文
不要修改目录中的文件
把文件添加到版本库
- 使用git add命令告诉Git,把文件添加到仓库(可反复多次使用添加多个文件)
例:git add readme.txt
- 使用git commit告诉Git,把文件提交到仓库
例:git commit -m “”
-m后引号中输入本次提交的说明
注意:所添加文件要以纯文本形式编码,最好所有文件时使用一种编码方式,且不能使用windows自带记事本编辑
所要添加文件一定要放到Git仓库所在文件夹中
Git仓库状态管理
- git status命令:返回Git仓库内容和状态
- git diff命令:后接所要查看文件名,获取修改内容
- git log命令:显示所有提交日志
- 后可加 --pretty=one line参数简化输出信息,输出版本号
- Git中HEAD表示当前版本,HEAD^表示上一版本也可写作HEAD~1,依次增加数字
- git rese --head HEAD^:回到上一个版本
- git reset –head+版本号,即可回到相应版本(版本号写前几位即可)
- git reflog命令:返回每一次命令操作
暂存区:Git工作区中有一格隐藏目录,即Git的版本库
版本库中存在暂存区(stage)和Git自动创建的第一个分支master,以及指向master的一个指针HEAD
在之前向版本库中添加文件时,git add本质上即是把文件放到暂存区,git commit即把文件提交到分支上
在文件提交后又没有对工作区做任何修改时,工作区就是“干净”的(work tree clean)
撤销修改
- git checkout --file命令:丢弃工作区的修改
- git reset HEAD <file>命令:将暂存区内容回退到工作区,再以工作区内容修改
- 修改已经提交到版本库,使用版本回退命令
删除文件
首先使用rm删除文件或者在文件夹中手动删除文件,然后使用git rm在版本库中删除文件并且使用git commit -m“”将修改信息提交到版本库。
git checkout命令:用版本库中的版本替换工作区的版本,对工作区内的修改和删除进行还原
远程库
- 添加远程库:使用ssh-keygen -t rsa -C “邮箱”获取id_rsa.pub
- 在github设置中找到ssh keys,将pub密钥填入
- 在GitHub中创建仓库
- 使用:git remote add origin git@github.com:GitHub用户名/仓库名 命令关联远程仓库
- 使用git push -u origin master 将本地仓库内容推送至远程仓库
- 删除远程库(实际上是解除本地与远程的绑定关系):git remote rm origin
- 克隆远程库:git clone git@github.com:servername/repo-ame
分支管理
- git checkout -b 分支名:创建并切换
- git branch:查看当前分支
- git checkout:切换分支
- git merge:合并指定分支到当前分支
- git branch -d dev:删除分支
- git switch:切换分支
- git switch -c :创建并切换到当前分支
- git log –graph:可查看分支合并图
- git stash:保存当前工作区内容
- git stash pop:回到工作现场
- git stash list:工作区内容列表
- git branch -D dev:dev还未合并,强行删除
- git remote:查看远程库的信息(加-v显示信息更详细)
- git push origin 分支名:将该分支上所有本地提交推送到远程库,开发过程中master、dev分支要时刻与远程同步
- git pull:抓取最新的提交
- git branch --set-upstream branch-name origin/branch-name:建立本地分支和远程分支的关联
- git checkout -b branch-name origin/branch-name:在本地创建和远程分支对应的分支
当分支合并发生冲突时,需要将合并失败的文件手动编辑成所需内容