一, 了解 Git 和 GitHub
1, 什么是 Git?
Git 是一个免费, 开源的版本控制软件
2, 什么是版本控制系统?
版本控制是一种记录一个或若干个文件内容变化, 以便将来查阅特定版本修订情况得系统.
系统具体功能
记录文件的所有历史变化
随时可恢复到任何一个历史状态
多人协作开发或修改
错误恢复
版本控制的工具:
- SVN
- Git : 软件帮助使用者进行版本的管理
3, 什么是 GitHub
GitHub 是全球最大的社交编程及代码托管网站 (https://github.com/).
GitHub 可以托管各种 Git 库, 并提供一个 web 界面 (用户名. GitHub.io / 仓库名)
4, GitHub 和 Git 是什么关系
Git 是版本控制软件
GitHub 是项目代码托管的平台, 借助 Git 来管理项目代码
二, 使用 Git
一个创业者的故事:
项目背景: 这个创业者想开发一个资源共享的系统
阶段一: 顺利上线代码
首先在你创建的项目的文件夹里面右键 ---> 点击 Gir Bash Here----> 吧 Git 运行起来.
1, 初始化: Git init
2, 如果你第一次使用 Git 的时候, 需要配置一下. 如果你已经配置了, 以后就不用配置了
3, 吧当前的目录以及及所有的子文件添加到 Git:Git add . #所有的文件
Git templates/index.html #具体添加的文件
4, 真实的吧数据提交上线: Git commit -m "描述信息"
5, 查看状态, 看那个是否被修改过: Git status
一定记得先 add, 后 commit,add 之后是没有放到版本里的, 只有 commit 的时候才有版本
6, 查看有几个版本: 查看版本提交记录 :Git log
7, 回滚到上一个版本: Git reset --hard 版本号
没一次生成的时候 commit 后面都会随机的生成版本号
8, 再跳回去 (查看往后的版本号):Git reflog
Git 把管理的文件分为了两个区域四个状态.
add 到暂存状态的时候成绿色了, 在 commit 的时候就没有了
提供了这个回滚的功能.
阶段二: 当开发到一半的时候出现 bug, 修复 bug
- 开发直播功能 (预计一周开发完成)
当项目开发到一半的时候, 出现 bug 了怎么办?
解决思路: 把我们的代码变成没开发之前的代码, 改完 bug 再提交. 先把你当前开发的代码拿走, 找个地方先存起来.
那么怎么做呢?
方案一: 修复 bug:stash
stash 用于将工作区发生变化的所有文件获取临时存储在 "某个地方", 将工作区还原当前版本未操作前的状态; stash 还可以将临时存储在 "某个地方" 的文件再次拿回到工作区.
特别的: 执行 Git stash pop 命令时, 可能会遇到冲突, 因为在紧急修复 bug 的代码和通过 stash 存储在 "某个地方" 的代码会有重合部分, 所以执行 Git stash pop 时候就会出现冲突, 有冲突解决冲突即可.
stash 相关常用命令:
Git stash 将当前工作区所有修改过的内容存储到 "某个地方", 将工作区还原到当前版本未修改过的状态
Git stash list 查看 "某个地方" 存储的所有记录
Git stash clear 清空 "某个地方"
Git stash pop 将第一个记录从 "某个地方" 重新拿到工作区 (可能有冲突)
Git stash apply 编号, 将指定编号记录从 "某个地方" 重新拿到工作区 (可能有冲突)
Git stash drop 编号, 删除指定编号的记录
当你新开发的代码和你修复的代码发生冲突的时候就手动解决冲突.
方案二: 修复 bug: 利用分支 (推荐)
默认会有一个 master 的分支. 只做线上的版本, 注意不要在 master 分支上修改, 要修改的话就创建一个 bug 分支
1, 创建一个修复 bug 的分支: Git branch bug , 这个 bug 分支是在 master 分支上建的, 相当于拷贝了一份
2, 查看一共有几个分支 : Git branch
3, 跳转到 bug 分支: Git checkout bug
4, 跳转到 master 分支: Git branch master
5, 创建一个修复 bug 的分支: Git branch dev #只做开发的版本
现在就有三个分支了, 每个分支都是不一样的, bug 修复完了, 现在就要合并在 master 上了.
6,master 和 bug 分支合并: Git mare bug
7, 删除 bug 分支: Git branch -d bug
8, 继续开发, 切到 dev:Git branch dev
9, 开发完毕, master 和 dev 合并: Git marge dev
切换之前一定记得把你的代码提交一下.
合并的时候可能出现冲突, 可能不出现, 出现冲突了就得手动解决
修复 Bug 流程:
- Git branch dev
- Git checkout dev
- # 写代码
- Git add .
- Git commit -m 'xxx'
- Git checkout master
- Git branch bug
- Git chekcout bug
- # 修复 bug
- Git add .
- Git commit -m '紧急修复 bug'
- Git checkout master
- Git merge bug
- Git branch -d bug
- Git checkout dev
- # 继续开发
阶段三: 两个地方办公
云端需要一个存放代码的地方用 GitHub
公共的
- GitHub 是用来做代码托管的
- 码云, 做代码托管
- csdn code , 做代码托管
内部搭建:
- GitLab
1, 登录 GitHub
在家里:
创建完成以后
就会有这样一个地址, 我们就可以用这个地址来提交
下面是正在往远程推送, 完了登录上去就会有 mester 分支了.
当然我们也可以吧 dev 也推送过来, 和上面一样的方式.
在公司:
克隆
克隆的时候只是把 master 分支克隆了, 其他的怎么拿呢?
用 Git pull origin dev #拿到远程的 dev
创建目录
家里:
- Git add .
- Git commit -m 'xx'
- Git remote add origin https://github.com/WuPeiqi/greenlu.git
- Git push origin master
公司:
# 新公司第一次获取代码
方式一
Git clone https://github.com/WuPeiqi/greenlu.git
方式二
- Git init
- Git remote add origin https://github.com/WuPeiqi/greenlu.git
Git pull origin master 直接拿回来
方式三
- Git init
- Git remote add origin https://github.com/WuPeiqi/greenlu.git
这的两句相当于 Git pull origin master 这一句
Git fetch origin master 拿到分支上了
Git merge origin/master 合并在一起
- # 日后
- Git pull origin master #
或者
- Git fetch origin master
- Git merge origin/master
- # 如果你在本地修改问题, 又 add, 又提交, 在线上去拿的时候, 或许会冲突
来源: http://www.bubuko.com/infodetail-2883477.html