1. 什么是版本控制
一种记录一个或若干文件内容变化,以便将来查询特定版本修订情况的系统。
2. 为什么需要版本控制
需要更好的关注变更,了解每个版本的改动是什么,方便对改动的代码进行检查,预防事故发生;便于随时切换到不同的版本,回滚误删误改的问题代码。
3. 版本控制代表软件
本地版本控制
- 方式:通过本地复制文件夹,来完成版本控制,一般可以通过不同的文件名来区分版本
- 代表性工具:RCS
- 解决的问题:本地代码的版本控制
集中式版本控制
- 方式:
- 提供一个远端服务来保存文件,所有用户的提交都提交到该服务器中
- 增量保存每次提交的Diff,如果提交的增量中和远端显存的文件存在冲突,则需要本地提前解决冲突
- 代表性工具:SVN
- 解决的问题:提供一个远端服务器来维护代码版本,本地不保存代码版本
分布式版本控制
- 方式:
- 每个库都存有完整的提交历史,可以直接在本地进行代码提交
- 每次提交记录的都是完整的文件快照,而不是记录增量
- 通过Push等操作来文成和远端代码的同步
- 代表性工具:Git
- 解决的问题:每个仓库都能记录版本历史,解决只有一个服务器保存版本的问题
4. Git是什么
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
5. Git的基本使用方式
配置命令
git config- 常见的Git配置
-
用户名配置
git config --global user.name "aaa"git config -- global user.email aaa@bb.cc -
InsteadOf配置
git config --global url.git@github.com:.insteadOf https://github.com/ -
Git命令别名配置
git config --global alias.cin "commit --amend --no-edit"
-
- 常见的Git配置
git remote
提交代码
git addgit commit
远端同步
- 控制代码
git clone- 拉取完整的从库到本地目录,可以指定分支,深度
git pull- 拉取远端某分支,并和本地代码进行合并,操作等于git fetch + git merge
- 也可以通过git pull --rebase完成git fetch + git rebase操作
- 可能存在冲突,需要解决冲突
git fetch- 将远端某些分支最新代码拉取到本地,不会执行merge操作
- 会修改refs/remote内的分支信息,如果需要和本地代码合并需要手动操作。
- 推送代码
git push- 常用命令:git push origin master
- 冲突问题:如果本地的commit记录和远端的commit历史不一致,则会产生冲突,比如git commit --amend或者git rebase都有可能导致这个问题;如果该分支就自己一个人用,或者团队内确认可以修改历史则可以通过git push origin master -f 来完成强制推送,一般不推荐主干分支进行该操作,正常对应该解决冲突后再进行推送。
- 推送规则限制:可以通过保护分支,来配置一些保护规则,防止误操作,或者一些不合规的操作出现,导致代码丢失。