源代码管理及版本控制:
git 比svn更时髦
github
源代码管理,版本管理
对程序员来说,最重要的是代码
公司花了钱,就要获取源代码
所以源代码要有科学的办法管理起来
大家在做项目时,是如何管理源代码的
做一个tag标记,区分不同的版本
一个app上线,肯定还是有bug,用户体验也永远有提升的空间
当一个版本上线后,有人改bug,有人写新功能
都不能在原来的项目基础上修改代码
花三个月时间 上线
有客户反映有bug,如果上线一月有bug,
解决:
备份 保持代码在发布时的状态
做一个新功能添加动画效果失败,修改了n多代码,还得向后退,
血的教训
这时就需要版本管理
能够把开发过程中每一次代码变更都记录下来
并且提供了几种手段防止之前的问题
管理水平: 一个行业的标准
为什么要代码管理
ISO编码(国际标准化组织)
对于软件,也同样提出一个标准
软件到达什么程度,才能是一个合格的标准
产品质量:产品包 产品包生产过程
CMMI 软件成熟度的标志
在大公司中都会有认证的
一个软件的资质 CMMI 招标时会用,一个软件值多少钱
在大公司很重要
ISO和CMMI 都软件都有严格的要求,必须有
配置管理的一项 怎么管理你的源代码
源代码的管理的认识
1.保证源代码的完整
2.保证源代码的保密
代码产生的历史过程
对源代码管理要有历史观
对公司来说,他会对每一天产生的源代码都有记录
奖金:项目管理的手段 改bug的数量 多bug,罚钱 代码的行数(插件,查看代码的行数)
测试阶段 优化代码,测试bug,
以上管理不合理
就用版本控制 分文件管理,记录每一天的工作成果
一个产品发了1.0 还会发2.0..
不能在源包上修改新功能或者是修改bug
产品有一定的周期性,会按照1.0 2.0 这样的周期是迭代
iphone1 能直接做到iphone6的功能,这就不会有了安卓,但是为啥没这么做,因为没有这些功能,如果你把以后的都加上了,上线之后,你要做什么
产品的开发是需要有开发规律的
多人开发,
如果所有代码放在同一个文件中
版本管理
1.集中式 老板弄服务器,每个人的都提交到老板那,开发者只有一份新的 本地只有最新的代码 版本的历史是看不到的
有人 程序员 不爽 觉得麻烦,总是经过老板的同意
于是有了git
2.分布式 (由程序员开发出 linux系统的开发者之一)
: git 对全球程序员的第二个贡献 所有的平台都可以使用
历史记录也会在本地有一份,可以把整个版本库拖在本地
git是不是只有程序员可以用 NO
所有在电脑上写文本的人,比如一个书刊的发展
曹雪芹 红楼梦 ....如果那个时代有git,那么你就知道了红楼梦的草稿
当前工作目录 pwd
第一行 pwd 不是桌面,则想办法进入桌面
2.cd desktop 到达桌面 (cd 进入文件夹)
3.创建文件夹 mkdir mygit
cd mygit 进入mygit
git 命令行 敲git 进入git
git init 初始化git,打开git没有任何东西,其实是有的,只是是隐藏文件.git
会创建一个git仓库 .git,内部有很多文件
ls
HEAD
hooks 钩子 当你需要对git的功能自定义时,可以使用
objects 保存的一些对象 数据
branches 分支 1.0版本上线后,再开发新功能时,就是在分支上开发的.主干是默认分支 (所有被版本控制的控制都在这里)
description
苹果对git的支持很到位
所有git的功能都是有.git这个文件夹控制的
创建文件,改为纯文本状态
开始写红楼梦
写完保存在myGit文件夹中
雪琴吃午饭去,在之前把写好的作品放在git库中
git status 检查git库的状态
先回到git库中
cd..
nothing added to commit but untracked files present (use "git add" to track)
没有提交的内容,需要使用用git add 命令(注意:后面带后缀.txt)
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: hlm.txt
Untracked files:
(use "git add ..." to include in what will be committed)
.DS_Store
这个新文件被git 追踪了
命令 git commit -m “第一回成功了”(-和m之间不能有空格)
先做配置
git config --global user.name “zhangmao” 配置当前使用的用户名
git config --global user.email “1101..@qq.com” 配置当前使用的用户名
总结用过的命令
git 调起git程序
git config 列出或修改git配置
git config —global user.name 配置用户名
git config —global user.email 配置邮箱
init 初始化一个git库
add 要求git跟踪文件 (将文件添加到版本库管理之下)
commit 提交文件到git库 需要用到一个-m 后加注释 将要根据注释知道自己做了什么-m建立一个说明
工作区 添加add命名后,会把文件copy一份到git库中,同时版本库会追踪文件的变化,当一个文件进入缓冲区,再使用commit后,正在进入到版本库中,主分支
图 廖雪峰的官方网站 (看)
写第二回
git status >> modified..
git add (把文件中工作区赋值到缓存区)
git add .
git commit -m “写好第二回”
回顾今天的事情
git log 可以看到刚配置的邮箱和用户名 commit 后有一个信息摘要,是一个id,唯一的标志了你的操作
格式化log的方式
git log —pretty=oneline 把log格式化为一行
雪琴 感觉第一章写的不好,就想要修改
修改后
git status
发现修改了
git diff 可以列出文件区别 ,比较原文件和修改后的文件
感觉不错,决定提交
git commit -a 自动调用了git add
git commit -a -m “修改了第一回标题” (把add命令省略)
git log 查看修改记录
雪琴 开始写第三回
第二天
感觉之前写的不行 回滚
git status
git checkout hlm.txt 把工作区中尚未提交的给去掉
git reset --hard 强制 回滚
git reset —hard 回滚到哪写哪的id
总结刚使用的命令
git log 查看所有的提交记录
git diff 比较文件的异同
git checkout 命令 可以回滚未add的修改
git reset 命令 可以回滚已经add的修改
git reset 命令也可以回滚commit的修改
发现后悔了,我之前写的是对的
git log
git reflog 记录了你的所有操作 可以得到操作的id,根据id就可以回到那个id
git log 查看所有的操作记录
曹雪琴找好人帮他写
给他开辟一个新的地方写,不影响原来的写作
开辟分支,让好友在分支上写
git branch
*master (master 表示默认分支,) (*表示在哪个分支)
git branch zyz
git checkout zyz 切换分支到zyz
于是把电脑给好友,让好友写作
继续写作
第三回
好友提交
git commit -a -m "第三回完成"
感觉好友写的好,决定合并两人代码
1.切换自己的分支 自己的 分支没有好友的内容
git checkout master
2.git merge zyz 合并zyz的内容
总结
branch 查看分支 ,创建分支
checkout 切换分支
merge 合并分支
分支这个作用是很有用的,当你正式版
git创建分支非常快
曹学琴回来写第四回
提交
git commit -a -m "第四次完成"
好友来
git checkout zyz
发现没有曹的第四
合并分支
git merge master
好友写第五回
曹回来,决定第五回不行
于是自己亲自写第五回
切换到自己的分支
自己写
提交
发现好友一部分还可以 ,就合并
git merge zyz
发现冲突
当发生冲突时,需要手动的修改冲突,解决了冲突之后再次提交就可以了
总结:合并分支可能产生冲突,多人同时修改一个文件时,也会产生冲突
曹决定发布一个预览版
发布版本起一个版本号
git tag
以上关于git库的本地管理
接下来远程管理
曹出差,想要出差也能写作
需要网络间接到版本库
自己的电脑不行,因为可能是动态IP
这时就需要服务器
曹不是搞IT的,不会搞服务器,也买不起服务器(一台服务器好几千)
曹想借,比人告诉他不用借,
有个网站可以免费试用github
国内也有一个类似的网站
git.osChina.net 国内在线的git库 (服务器快,在国内 而且是中文)
两者的操作都是一样的
github对公开项目是免费的,私有项目是收费的
于是曹在OSChina上注册了下
登陆
在下角 新建项目
项目名 介绍 项目语言 html
GitIgnore也选html
.app之类的文件 别人也会创建一个app,怎么忽略,通过GitIgore
开源许可证 不开源
私有项目 选择
也选择文件占位符
创键.
HTTPS SSH 后跟一个URL 根据这个url 可以连接到本地的git库
怎么连
回到osChina 点用户小图标 点ssh公钥,在这里添加公钥(如何获取公钥,点击下面的提示),把公钥粘贴过来,会生成一个小名字,添加成功,返回,你f发现SSh中有你添加的公钥
通过这种方式,你就可以连接到本地库,而且数据的传送也是加密的
如果密码丢失,怎么办,找到公钥私钥删掉,会生成一个新的公钥,把得到的新公钥添加到网站上
远程库,已经添加成功
命令 clone 将远程git库复制到本地
命令行使用
先把工作目录切换到桌面
cd ~/desktop
pwd
git clone 后面是那个能够复制的地址(https)(第一次使用clone的时候,需要你在终端输入你开源社区的账号和密码)
创建一个工程,放在版本库文件夹中
工程中?表示未追踪状态
A 需要添加
M 这个文件是勾选状态
webstrom和命令行,可以混用
webstrom 只提供了有限的功能,更高级的功能需要命令行来提供
webstrom对git的支持很好
git push 把本地的库推送的远程服务器上
你push后,
到osChina,刷新,看push的内容
同理
Pull 把远程库中的内容拉到本地库
pull push 多人合作时,可以使用
打赏
微信扫一扫,打赏作者吧~