Git与GitHub学习笔记
一、Git简介
Git是世界上最先进的分布式版本控制系统。
由Linus.Torvalds(林纳斯.托瓦兹)在两周内完成
二、版本控制能做些什么
- 协同开发
- 冲突解决
- 版本记录
- 历史追查
- 代码备份
- 版本还原
- 权限管理
- 分支管理
- 代码审查
三、集中管理型版本控制

经典的集中管理型:CVS, VSS, SVN
特点:实现了大部分开发中对版本管理的要求,结构简单,上手容易。
问题:
1. 服务器一旦崩溃,代码无法恢复
2. 要求必须是完整版本,无法做小版本
3. 系统正在上线运行,如何管理几个版本?
4. 如何管理一个分布在世界各地,互不相识的大型开发团队。
四、分布式

五、Git实操
-
Git设置命令
git config --global user.name "xxx"
git config --global user.email "xxx@hainan.net"
Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
--global 表示全局属性
-
Git实战操练
-
创建版本库
在项目文件夹内执行 git init
-
提交文件
- 新建文件后,通过 git status 进行查看文件状态
- 将文件添加到暂存区,通过 git add 文件名
- 提交文件到版本库 git commit
- 边写注释 完成提交
- 也可以 git commit -m "注释内容" ,直接带注释提交
-
查看文件提交记录
- 执行 git log 文件名,进行查看历史记录
- git log --pretty=oneline 文件名 ,进行简易信息查询
-
回退历史
- git reset --hard HEAD^ 回退到上一次提交
- *git reset --hard HEAD~n * 回退n次操作
-
版本穿越
-
进行查看历史记录的版本号
执行git reflog 文件名
-
执行 git reset --hard 版本号
-
-
还原文件
- git checkout --文件名
-
删除文件
-
先删除文件
-
再 git add 提交
-
-
五、工作区 + 暂存区 + 本地库

六、分支

-
创建分支
-
git branch <分支名> -
git branch -v 查看分支
-
-
切换分支
-
git checkout <分支名> -
一步完成:
git checkout -b <分支名>
-
-
合并分支
-
先切换到主干
git checkout master -
git merge <分支名>
-
-
删除分支
-
先切换到主干
git checkout master -
git branch -D <分支名>
-
七、冲突
通过 *git diff* 找到发生冲突的文件及冲突内容,然后修改内容,再次 *git add* 和 *git commit*
八、Github
-
简介
Github是一个Git项目托管网站,主要提供基于Git的版本托管服务
-
实操
-
增加远程地址
git remote add <远端代号> <远端地址> -
推送到远程库
git push <远端代号> <远端地址> -
从GitHub上克隆一个项目
git clone <远端代号> <远端地址> -
从GitHub上更新一个项目
git pull <远端代号> <远端地址>
-
九、SSH
-
先检测有无.ssh
cd ~/.ssh -
创建ssh.key
ssh-keygen -t rsa -C xxx@qq.com -
查看公钥(此处需要先进到上一步生成秘钥的路径处执行)
cat id-rsa.pub #cat 是用来查看小文件的linux命令 -
复制后粘贴到GitHub上
setting--》SSH and GPGkeys
-
改用ssh连接
git remote add <ssh远端代号> <ssh远端地址> -
用ssh提交(不用填写账号密码且更安全)
git push <ssh远端代号> <ssh远端地址>
十、Git工作流
-
简单来说就是,一个项目的成员们在工作中统一使用Git的工作方式
- 集中式工作流(一般用于svn)
- 像SVN一样,集中式工作流以中央仓库作为项目所有修改的单点实体。所有修改都提交到Master这个分支上。这种方式与SVN的主要区别就是开发人员有本地库。Git很多特性并没有用到。
- GitFlow工作流
- Gitflow工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。
- 主干分支 master
- 主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。
- 开发分支 develop
- 主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
- bug修复分支 hotfix
- 主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。
- 发布版本分支 release
- 较大的版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。
- 功能分支 feature
- 为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。 开发完成后会合并到开发分支。
- 示例

- 集中式工作流(一般用于svn)
十一、在Pycharm中使用Git
-
clone项目
VCS--》Git--》clone--》Github--》填写远端地址

浙公网安备 33010602011771号