Git简介
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。它最初由Linus Torvalds创建,旨在为 Linux 内核开发提供更好的版本控制工具。Git 提供了一种强大的方式来管理代码,跟踪变化,合作开发,解决冲突,并确保代码的稳定和可维护性。
Git特性
- 分布式版本控制:每个开发者都拥有自己的完整代码副本,这使得在没有网络连接的情况下也可以继续工作。每个副本都包含完整的历史记录和分支信息。
- 高效性能:Git 的存储方式非常高效,它使用了哈希值来存储文件,以确保数据完整性。因此,无论代码库有多大,Git 都能快速进行操作。
- 支持分支和合并:Git 鼓励开发者使用分支来开展并行开发,然后将不同分支的更改合并回主分支。这种方式能够有效管理并行开发和多个特性的并行开发。
- 本地提交:开发者可以在本地多次提交代码,然后再将这些提交同步到远程服务器上,这使得每个开发者可以在本地频繁保存代码变化。
- 可定制性和配置性:Git 提供了大量的配置选项,允许开发者根据项目的需求进行定制。
- 支持多种工作流:Git 支持多种工作流模型,如集中式、分支模型、分叉模型等,使开发团队可以根据项目的需求选择适合的工作流。
- 强大的分支管理:Git 的分支管理非常灵活,可以创建、切换、合并和删除分支,这有助于管理不同特性和修复分支。
- 广泛的支持:Git 已经成为事实上的标准,被广泛应用于开源和商业项目中。
Git实践
-
git安装和配置
安装地址:git-scm.com/
git config --global user.name "Xiansheng Zhang" git config --global user.email xxxxxx@163.com git config --global --list
-
新建仓库
git init 或 git clone创建仓库
-
工作区域和文件状态
- 工作区域分为工作区、暂存区和本地仓库。工作区是我们实际操作的目录,暂存区是一个中间区域用于临时存放即将提交的修改内容,本地仓库是Git存储代码和版本信息的主要位置。
- 修改完工作区文件用git add添加到暂存区,再用git commit将暂存区的修改提交到本地仓库中。
- Git文件状态:未跟踪、未修改、已修改、已暂存。
-
添加文件和提交文件
git init //创建仓库 git status //查看仓库的状态 git add //添加到暂存区 git commit //提交
-
回退版本
git reset --回退策略
根据不同的使用场景,也有不同的回退策略:soft、hard和mixed。
-
查看差异
git diff //查看工作区、暂存区、本地仓库之间的差异,查看不同版本之间的差异和不同分支之间的差异
-
删除文件
先删除工作区文件,然后再更新暂存区再提交或git rm将文件从工作区和暂存区同时删除再提交
-
SSH配置和克隆仓库
ssh -keygen -t rsa -b 4096 //生成SSH key git clone repo-address //克隆仓库 git push //推送更新内容 git pill //拉取更新内容
-
关联本地仓库和远程仓库
添加远程仓库
git remote add git push -u git remote -v //查看远程仓库 git push : //拉取远程仓库内容
-
GUI工具
Github Desktop、Sourcetree、GitKraken、
-
分支简介
git branch //创建分支 git switch //切换分支 git merge //分支合并 git branch -d //删除分支(已合并) git branch -D //删除分支(未合并)
-
合并分支冲突:手动解决冲突等。
-
回退和rebase
git rebase
Merge:不会破坏原分支的提交记录,方便回溯和查看;会产生额外的提交节点,分支图比较复杂。
Rebase:不会新增额外的提交记录,形成线性历史,比较直观和干净;会改变提交历史,改变当前分支branch out的节点,避免在共享分支时使用。
-
分支管理和工作流模型
GitFlow模型和GitHub Flow模型。
学习感悟
通过对Git的学习,已基本掌握Git的使用和原理,对之后的个人开发和学习工作有很大的帮助。除了Github仓库,也有其他仓库可以进行学习测试,如:gitee国内平台和gitlab.com私有化部署等。对于Git的使用还需要熟练掌握,以满足未来协作开发的工作需求。