版本控制系统
版本控制系统常用分别有SVN与GIT,两者的区别在于SVN是集成式版本控制系统,而GIT为分布式版本控制系统.下面是GIT的
安装与操作
GIT的安装
Windows下
1、git的下载网站
https://git-scm.com/downloads
2、安装问题
安装路径不要出现中文路径可能会出错
3、环境配置
一般是会自动配置环境,但如果没有的话,在我的电脑的属性里的高级配置中选择环境变量配置,在PATH下拼接上git的环境
(一般在安装目录的bin目录下有个git.exe文件)
4、查询是否成功
cmd下输入 git --version
Linux下
1、安装
sudo apt install git
2、查询是否成功
git --version
GIT操作
设置git
后续远程仓库需要用到github,所以需要创建用户,建议用户名设置简单点,不然后面可能会很烦人
git config --global user.email "你的github的邮箱"
git config --global user.name "你的github用户名"
创建本地仓库
mkdir test //创建本地仓库,仓库名可以任意
cd test
git init //初始化本地仓库
创建忽略清单
将要忽略的文件的绝对路径添加到.gitignore中,一行一个.忽略清单中的文件不会被管理
touch .gitignore
查看仓库状态
?? 表示没有被仓库管理
A 表示添加到仓库管理
M 表示该文件被修改
D 表示该文件被删除
I 表示忽略了该文件
R 表示该文件被代替
C 表示冲突
git status -s
在本地缓存中添加管理文件
git add 文件名
git add . //将目录下所有文件添加到本地缓存中托管
将缓存区添加到本地仓库中
git commit -m "对该操作的描述"
查看你的提交日志
git log --pretty=oneline //将提交记录以一行一行形式显示
查询文件差异
git diff 文件名 //会对比最新版本的该文本显示差异
撤销未添加到缓存区的对应的文件的操作
git checkout -- 文件名 //将该文件恢复到最新版本的状态
撤销已添加到缓存区还未添加到本地仓库
git reset --hard HEAD //将工作区恢复到最新版本的状态
版本回退
git reset --hard HEAD //将工作区恢复到最新版本的状态
git reset --hard HEAD^
//将工作区恢复到最新版本的上一个版本的状态,一个^就是最新的上一个,两个^就是最新的上两个依次类推
git reset --hard 哈希码 //前六位即可
提示:如果版本回退了后HEAD会指向退回的那个版本,并且你查询提交日志的时候他不会显示之前的最新版本,这时候可以用哈希码回到最初最新的版本
git reset --hard 哈希码 //前六位即可
远程仓库与本地仓库
远程项目仓库创建
首先需要在github创建一个远程项目仓库,网页右上角有个加号里面的New repository
连接远程仓库
一、HTTPS连接
git remote add 你创建远程仓库的项目名 HTTPS的URL
// HTTPS的URL在你的远程仓库右上角有个Clone or download选择use HTTPS
git remote -v //查询连接是否成功
git remote rm 你创建远程仓库的项目名 // 删除远程仓库连接
将本地仓库上传到远程仓库
git push -u 项目名 master // 需要输入用户名和密码
如果出现以下错误的时候,则将-u改为-f即可
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
将远程仓库下载到本地仓库中
git pull 远程仓库名 master
将远程仓库克隆到本地仓库
git clone HTTPS的URL 目录名
提示:该方法不推荐因为每次本地仓库上传到远程仓库都得输入账号密码
二、SSH连接
该方法需要在linux下配置ssh
mkdir ~/.ssh //创建ssh目录
cd ~/.ssh
vi id_rsa.pub
//该文件中有与远程仓库连接的密钥,将里面的内容复制到txt中先将里面自带的空格,与最后面的网址去掉复制到github
//的密钥中
github中设置ssh连接
网页右上角>>settings>>SSH and GPG keys>>New SSH key
本地仓库上传到远程仓库或远程仓库下载到本地仓库命令都和HTTPS一样,但不用输入账号与密码因为之前已经配置过了,就是最后的HTTPSURL改成SSH的URL
创建分支与合并
创建分支
git branch 分支名
git checkout -b 分支名//创建分支并跳转到该分支
查看当前分支
git branch //*表示在哪个分支
删除分支
git branch -d 分支名
切换分支
git checkout 分支名
上传分支
git push 项目名 分支名
合并分支
合并完后记得add与commit
git merge 要合并到的主分支名 //要先切换到要合并分支的分支
抓取分支
git checkout -b 远程仓库下的分支名 项目名/远程仓库下的分支名
冲突与覆盖问题
在分支a(该分支下有文件1,文件2,文件3,文件4)下创建分支b和分支c,分支b与c中的内容是和a是一样的,但当b改变文件1内的内容时,在合并到a中时,a中的文件1内容会被覆盖,但这时候如果c也改变文件1中的内容时并且合并到a,那么这时候就会产生冲突问题,类似此类的冲突问题还有很多种,可以参考https://www.yiibai.com/git/git_handling_conflicts.html