Git - 版本控制
什么是版本控制:
集中式版本控制系统,版本库是集中存放在中央服务器的,在干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器. 中央服务器就好比是一个图书馆,如果你要改这本书里面的内容,那么你必须先拿到这本书,改完以后在放回图书馆.
集中式版本控制系统必须 联网 才能工作.
至于版本vzuocuo的优点:
举例说明: 一个最简单的开发团队,也许就两三个人,他们共同完成一个软件的开发。每个人都在修改、添加、删除着自己本地硬盘上的代码,当他们把这些代码汇总起来时,麻烦出现了。到底谁改了哪些文件,具体是文件里的哪部分被改动过?A的修改会不会把B的修改覆盖掉?汇总的工作变得很危险,需要非常小心,一旦出错后果不堪设想。显然此时,效率将会是无比的低下,如果某个地方出错,可能整个汇总工作就要重来一遍。这只是两三人的小团队,如果是几十人几百人的大团队呢?那将会是噩梦。如果这个团队采用了版本控制。那么版本控制软件在每次提交的时候都会主动合并所有人的修改并解决可能发生的冲突。每个人手里一直都是汇总好的代码。当开发进行到一定阶段,可以直接拿去测试,不需要再有额外的工作来浪费时间。另外,你还可以知道,程序的某个Bug,是怎么出现的(被谁以及什么时候引入进来的)。
git的工作区域分为工作区,缓冲区.
工作区其实就是整个项目的文件目录, 其中有很多隐藏文件叫.git, 该文件就是git的版本库. 在这个文件中有很多配置文件.
通过分支通常可以分为3大类
1:最终版本也就是master (通常该版本上面的代码要比所有的电脑少的多因为是最终确定发布版)
2:测试版本基于master只上的一个也就是该分支把所有分支串联一起然后测试是否有bug ,如果确定没有了才传到master上
3:各个人员所做的代码分支,通常有很多该分支每个分支属于一个人员操作
具体操作流程
第一步下载查看
git clone 网址 —— 表示第一次从服务器上下载下来
git pull —— 表示从服务器上下载下来(前提是有过服务器的网站)同步分支与github服务器
git branch —— 查看当前分支
git branch -a —— 查看所有分支
git branch -b xxxx —— 建一个叫xxxx的分支
git checkout xxxx —— 切换到xxxx分支
git branch -d xxxx —— 表示删除掉分支
git push delete xxx——远程删除分支
git.rm xxx ——删除某个叫 xxx文件
提交到缓存区
重点内容
git.status——查看哪些文件是否加入仓库 (通常修改后的文件会有显示)
git add .——提交所有修改的文件
git add xxx——单独提交某一个文件
git.commit-m ‘原因’——确定提交 并且写入修改说明 (方便以后查看)
如果不成功需要
设置全局变量:
git config –global user.name ’ ‘(首次创建需要填写名字)
git config –global user.email’ ‘(首次创建需要填写邮箱)
git push origin xxxx —— 表示通过xxxx分支传到服务器
git –version 确认是否有
创建密钥 在用ssh的时候 以后在上传时候可以不用输密码了
ssh-keygen -t rsa -C 帐号
比较分支之间的不同
git diff 分支 分支2
合并
git merge 分支名 (不同的话可以合并)
查看提交过的版本
git long
修改成某个版本
git reset –hard (id)
创建版本号
给分支创建tag版本
git tag -a 名字 -m
git tag -a v1.001 -m’版本’
推送版本号
git push origin v1.001
删除版本号
git tag -d v1.001(名字)
git push origin –delete tag v1.001
不同与合并及回滚
git diff 分支 分支 —— 查看本地两个分支比较有什么不同
git merge xxxx —— 在当前支线合并xxxx支线
git.log——查看历史版本
git reset 版本号 ——回滚版本(就能回到历史版本commit后的数字)
缓存修改的代码
表示如果你在修改代码的时候不想提交或者写错在某个分支上了 需要换到不同的分支,分别保存不同的代码:
缓存修改的代码
git stash
查看缓存
git stash list
还原缓存————需要切换到另一个分支
git stash apply stash@{x}
因此一般来说上班的时候第一天只需要git.clone 后面每日只需要git.pull
然后修改你的代码后git。add 然后git.commit -m原因