Git,分布式版本控制系统
1. 版本控制
blogv1
blogv2
blog90
...
blogv100
PS: 文件管理版本,每个版本需要保留
以上是使用文件或文件夹进行版本管理,以上方式有缺点:
多个文件,保留所有版本时,需要将多个文件保存在本地
协同操作,多人协同操作时,需要将文件发来发去...
容易丢失,被删除意味着永远失去(可以选择网盘)
简单总结:
vss: 不用
svn: 集中式版本控制系统;服务端有所有版本;客户端只有一个版本
GIT:分布式版本控制系统
共同点:
- 服务端(保存代码的仓库)
- 客户端(个人用户)
2. 需求来了
原始方法:
a. 创业初期:单身太久,硬盘沾满,创业:北京热; 同城交友
b. 开发新功能:直播(2个月)
拷贝一份,进行编辑,1个月
在回来:继续开发
c. 紧急修复bug,2个小时
从线上在拷贝一份,修复bug;上线
Git方式:
a. 创业初期:单身太久,硬盘沾满,创业:北京热; 同城交友
进入程序目录
git init => 初始化
生成 .git 文件,用于保存git相关所有信息,如:每个版本
git status => 查看状态
git add 文件名
git commit -m '提交信息'
配置用户信息:
git config --local user.name '名称'
git config --local user.email '邮箱'
其他:
git ls-tree head 查看版本中所有文件
git ls-files -s 查看暂存区和版本中所有文件
b. 开发新功能:短信提醒
有短信功能:
开发短信功能
创建msg.txt文件
git add .
git commit -m '开发短信功能'
git log
回滚(无短信功能):
git reset --hard 92dea56e57466115efab904a5f1d9adc361111e8
再回去:
git reflog
git reset --mix a615783
git checkout 文件名
c. 开发新功能:直播(2个月)
方式一:stash
工作区工作:
git stash -> 将当前已经做过的修改,保存到一个临时地方
修复bug
git add .
git commit -m '修复bug'
git stash pop -> 临时地方内容重新放回工作区
又出了一个bug
git stash
修复bug
git add .
git commit -m '修复bug'
git stash pop 出现冲突,手动解决
<<<<<<< Updated upstream
同城交友网站
张小戈
=======
同城交友网站
张小戈
开发直播功能到一半
>>>>>>> Stashed changes
同城交友网站
张小戈
开发直播功能到一半
git add .
git commit -m '修复bug'
其他:
git stash
git stash apply ‘名称’
git stash drop ‘名称’
git stash list
git stash pop
方式二:分支
master:只保留线上版本
dev: 保存所有开发版本
创建分支(注意当前所在分支):
git branch dev
进入分支:
git checkout dev
开发新功能:
开发...
git add .
git commit -m '开发功能1'
...
出现bug
git checkout master
git branch bug
git checkout bug
修复bug
...
git add .
git commit -m '修复bug'
合并
git checkout master
git merge bug
无冲突:过
有冲突:
手动解决
git add .
git commit -m '解决冲突'
git branch -d bug
再次回到dev,继续开发
git checkout dev
...
git add .
git commit -m '开发完毕'
合并
git checkout master
git merge dev
无冲突:过
有冲突:
手动解决
git add .
git commit -m '解决冲突'
d. 张戈,公司和家都要进行开发工作
远程仓库:
公共(自己):
github
https://code.csdn.net/
https://git.oschina.net/
公司(gitlab):
自己搭建
1. 注册账号
2. 创建代码仓库 wwwww
https://github.com/a877252372/wwwww.git
公司:
git remote add origin https://github.com/a877252372/wwwww.git
git checkout master
git push origin master # 推送
下班回家
回家:
git clone https://github.com/a877252372/wwwww.git
cd wwwww
git branch dev origin/dev
git checkout dev
写代码
git add .
git commit ...
git push origin dev
公司:
git checkout dev
git fetch origin dev
git pull origin dev 劲大
功能11
git add .
git commit ...
git push origin dev
功能12:(忘记提交,下班回家)
git add .
git commit ...
git push origin dev
回家:
git branch dev
git pull origin dev
功能13:
git add .
git commit ...
git push origin dev
公司:
获取代码,
git pull origin dev
无冲突:过
有冲突:
手动解决
git add .
git commit -m '解决冲突'
e. 协同开发
同一个远程仓库
A B C
github:
- 组织
- 邀请
1. 拉代码
2. 开发...
3. 合并
先提交:没问题
f. fork
1. fork别人项目
2. git clone xxxxxx
3. 修改
4. 提交【自己】
5. new pull request
6. 等
7. fork别人项目
3. 其他
用户名和密码:
https:...
ssh
ssh-keygen.exe
公钥
私钥
公钥放在github
git clone git@github.com:oyoui/bjstack.git
git push ...
忽略文件: .gitignore
https://github.com/github/gitignore/blob/master/Python.gitignore