Git入门指南
Git入门指南
智锐科创Git概述
- Git:免费开源的分布版本控制系统。
- 优点:占地面积小,性能极快,免费开源,有廉价的本地库、方便的暂存区以及分支。
- 版本控制:记录文件内容变化,方便查阅特定版本修订情况。
集中式版本控制工具 VS 分布式版本控制系统
集中式版本控制系统
- 集中化的版本控制系统:SVN\CVS。
- 特点:
- 有单一的集中控制服务器,保存所有文件修订版本。
- 客户端连接到服务器,取出最新文件或者提交更新。
- 缺点:
- 如果中央服务器挂了,大家都没法工作。
分布式版本控制系统
- 每台电脑都可以进行本地的版本控制,即使远程库挂了,只不过没法推送罢了。
- 每个客户端保存的也都是完整的项目(包含历史记录,更加安全)
- Git的历史吹水
- Linus本人手动合并代码来更新Linux
- 商业软件BitKeeper人道主义免费授权,但是要求不能被破解。
- 05年有人破解了,收回使用权。Linus用C语言两周开发了Git。
- 08年GitHub上线,jQuery、Ruby、PHP都将代码放到GitHub上开源
Git工作区域
- 工作区:代码存放的磁盘位置。
- –>git add
- 暂存区
- –>git commit
- 本地库:存储历史版本。
- –>git push
- 推送到远程库。
- 局域网:gitlab
- 互联网:GitHub、gitee
git常用命令
Git常用命令
- 设置用户签名:
git config --global user.name 用户名git config --global user.email 邮箱
- 初始化本地库:
git init - 查看本地库状态:
git status - 添加到暂存区:
git add 文件名 - 提交到本地库:
git commit -m "日志信息" 文件名 - 查看历史记录:
git reflog - 版本穿梭:
git reset --hard 版本号
设置用户签名
- 签名作用:区分不同操作者身份。在每个版本的提交者信息可以看到。
- git首次安装必须设置一下用户签名。这里的用户前面和GitHub上没有关系。
git status
未添加的提示信息:
1 | On branch master |
执行git add cpp/ 后: 添加到暂存区
1 | On branch master |
执行git commit -m “测试提交” /cpp后:提交到本地库
1 | On branch master |
历史版本和版本穿梭
查看版本信息:git reflog 查看版本信息、版本号、指针
查看详细信息:git log 查看提交者和提交时间
穿越版本,复制版本号后:git reset –hard 版本号
- 这时候查看文件内容,就会发现内容发生变化。
git切换版本,底层其实是移动HEAD指针。
- HEAD->MASTER->FIRST
- 每次移动都是改动MASTER
Git分支
- 分支理解
- 使用分支:程序员将自己工作从主线上分离开来,开发自己分支的时候不会影响主线。
- 分支可以简单理解为副本,底层实际上是指针引用。
- 例如:
- 主线分支1.0 –》颜色分支改动后合并到主线 –》主线分支1.1
- 游戏分支经历4个版本后合并到主线 –》主线分支1.2
- 分支好处:
- 同时并行推进多个功能开发,提高开发效率。
- 某个分支开发失败,对其它分支不会有影响。
Git分支命令
- 创建分支
git branch 分支名
- 查看分支
git branch -v
- 切换分支
git checkout 分支名
- 把指定分支合并到当前分支
git merge 分支名- 在master上执行merge hot-fix 就是把hot-fix融到master上
- 正常合并:hot分支 基于master分支没改动 的基础上修改并merge。
- 冲突合并:合并分支的时候,在同一个文件的同一个位置有两套完全不同的修改。git无法决定使用哪一个,必须人为决定新代码的内容。
移动分支的本质
- master、hot-fix都是指向具体版本记录的指针。
- 当前所在的指针其实由HEAD决定,创建分支就是多创建一个指针。
- 切换分支的本质就是移动HEAD指针。
远程
GitHub远程仓库操作常见命令
- 查看当前所有远程地址别名:
git remove -v - 起别名:
git remove add 别名 远程地址 - 推送本地分支上的内容到远程库:
git push 别名 分支 - 将远程仓库内容克隆到本地:
git clone 远程地址 - 将远程仓库对于分支的最新内容拉下来后与当前本地分支合并
git pull 远程库地址别名 远程分支名

