1.什么是Git?
Git是一个分布式的版本控制工具。版本控制主要解决的问题有:
- 代码管理混乱
- 备份多个版本,占用磁盘空间大
- 代码出错之后,难于恢复至以前正确版本
- 项目版本发布困难等等
2.安装Git(window版本)
在Git官网下载window版本。官方下载网址为:Git Window版本下载
- 当安装成功之后,右击鼠标会出现下图
- 右键Git Bash ,配置Git的全局配置
//填写自己的用户名
git config --global user.name "wpx"
//填写自己的一个邮箱,注意这个邮箱,以后链接远程库会需要
git config --global user.email "260129327@qq.com"
- 当设置成功之后,在本地home目录下面会出现一个git配置文件
3.Git本地常用命令
3.1 初始化一个仓库(在我本机的的E:\mygit
)
//意味着,mygit文件夹,允许git控制
git init
3.2 将一个文件上传到版本库
//将readme.txt文件长传到暂存区,注意:文件名有引号
git add "readme.txt"
//将暂存区的的文件转移到版本库(只是把暂存区的文件转移到版本库)
git commit -m "add a file"
//查看git仓库的状态
git status
3.3 和版本回退相关的命令
- 通过相对版本号回退
//回退到某一个版本
git reset --hard HEAD~index
//假设回退到(上一个)版本
git reset --hard HEAD~1
- 通过
commit id
(版本号)回退版本
//通过日志查看版本记录
git log
//通过版本号回退(commit_id是具体的id号)
git reset --hard commit_id
- 撤销修改(如果没有提交暂存区)
//注意:没有提交到暂存区。如果提交到暂存区就不能用这个命令(注意文件名没有引号)
//让这个文件回到最近一次git commit或git add时的状态
git checkout -- readme.txt
- 撤销修改(提交到了暂存区)
//将版本库的文件拿到工作区,同时清空暂存区(注意此时:文件名没有引号)
git reset HEAD readme.txt
- 如果文件提交到了版本库,可以使用版本回退
- 删除版本库中的文件(注意是本地文件)
//删除本地文件
rm readme.txt
//删除版本库文件
git rm readme.txt
//提交改变
git commit -m "delete file"
3.4 和分支相关的命令(本地分支)
3.4.1分支公共命令
- 创建一个分支
//创建一个分支叫做dev
git branch dev
//切换到dev分支
git checkout dev
//或者:
// 创建并切换到dev分支
git checkout -b dev
- 查看当前分支
git branch
3.4.2快速合并分支
- 合并分支
//注意此命令是在master分支上运行,也就是master合并dev分支(不带参数代表是快速合并如下图所示),只是HEAD指针发生改变了
git merge dev
- 删除分支
git branch -d dev
3.4.3不使用快速合并分支(一般我们用这种情况)
//-m 是输入日志信息(可以不写)
git merge --no-ff -m "merge with no-ff" dev
- 分支图是这样的
3.4.4解决分支冲突
当我们的分支有冲突时,执行git merge dev
出现下面错误,同时文件变成了:
- 修改文件之后重新提交,此时的分支图是这样
4.Git远程常用命令
在这里使用OSChina的git仓库。OSChina的Git仓库可以创建私有项目。
4.1 创建远程仓库(注意要注册一个oschina账户),并注册密钥
- 登录oschina创建一个远程仓库
- 创建私钥和公钥(一直点确定)
//后面的字符串写自己的邮箱(其实可以随便写)
ssh-keygen -t rsa -C "260129327@qq.com"
- 创建完成在改目录下有一个.ssh文件(
C:\Users\wpx
)注意:此时文件夹下面有两个文件
- 将
id_rsa.pub
文件的内容拷贝到oschina(如图所示)
添加公钥内容:
成功:
4.2 远程常用命令
- 克隆远程库(在硬盘随便找个地方,最好不要有中文路径,一般是第一次将项目拷贝到本地)
//注意: 1.后面的地址写你刚刚创建的仓库地址
// 2.仅仅将远程的master分支克隆到本地
// 3.远程的分支默认名称为origin
git clone git@git.oschina.net:alrmm/mygit.git
第一次使用git远程仓库时,记得这里一定要写yes(不要不写!!!)
选择yes之后.ssh
文件夹变成了三个文件
- 将项目推送到远程
//如果项目没有和远程仓库关联,先和远程仓库关联
//origin是远程仓库的名称(其实可以随便写,就是一个代号)
git remote add origin git@git.oschina.net:alrmm/mygit.git
//将项目推送到远程(origin要和关联仓库的名称对象,-u代表既推送分支,也关联分支,可以简化命令,一般是第一次推送)
git push -u origin master
//第二次推送可以这样(将本地的对应分支推送到远程)
//
git push
- 将项目pull到本地(一般是开发过程中先从远程下载git项目里的文件,然后将文件与本地的分支进行merge。)
//注意:
// 1 如果是个人开发,不存在冲突,可以直接pull
git pull git@git.oschina.net:alrmm/mygit.git
- 将他人的项目拷贝到我的仓库使用
fork
命令
4.3 远程分支命令
- 默认情况下,只会master拷贝到本地(这里将dev分支拷贝到本地)
//将远程的dev分支拷贝到本地的dev分支
git checkout -b dev origin/dev
- 将本地的dev分支推送到远程
git push origin dev
- 远程分支合并冲突问题(多个合作),一般都是先pull下来解决冲突,然后在push,注意:推送的都是本地版本库的文件,我们一定要提交到本地版本库在push到远程
5.总结
在本篇博客中主要介绍了:
- 如何安装Git
- 在本地中如何使用Git
- 如何链接远程 Git仓库
- 如何解决冲突问题(多人协作)