Git
Git 是一种分布式版本控制系统,用于管理软件项目的源代码。它是由 Linux 之父 Linus Torvalds 开发的,并已经成为了现代软件开发领域中最流行的版本控制系统之一。
SVN与Git的的区别
SVN和Git都是版本控制系统,但它们有以下区别:
- 分布式 vs 集中式:Git 是一种分布式版本控制系统,而 SVN 是一种集中式版本控制系统。在 Git 中,每个开发者都拥有本地代码库的完整副本,可以离线工作并在不同的工作流程之间自由转换。而在 SVN 中,所有开发者共享同一个中央代码库,并且需要有网络连接才能进行版本控制操作。
- 分支管理:Git 在分支管理方面比 SVN 更加强大和灵活。Git 的分支非常轻量级,创建和合并分支也很容易,因此可以轻松实现多人协作和并行开发。而在 SVN 中,分支比较重量级(即创建和合并分支需要花费相对更多的时间和资源),因此往往只用于重要的版本分支。
- 版本号:Git 使用 SHA-1 哈希值来标识每个提交,而 SVN 采用递增的数字版本号来标识每个提交。SHA-1 哈希值保证了每个提交的唯一性,而递增版本号则简化了版本控制过程。
- 整体性:由于 SVN 是一种集中式版本控制系统,因此所有数据都存储在中央代码库中。如果中央代码库损坏或丢失,可能会导致数据丢失或无法恢复。而 Git 是一种分布式版本控制系统,每个开发者都拥有完整的代码库副本,保证了代码的整体性和可靠性。
- 性能:Git 比 SVN 更快,特别是在处理大型仓库、分支合并以及比较代码差异时。Git 使用基于内容的哈希算法来检测文件是否修改,而 SVN 则需要检查文件的元数据(如时间戳和文件大小)来确定是否修改。
总之,虽然 SVN 和 Git 都是版本控制系统,但它们的设计和实现方式存在较大差异,开发人员应根据自身需求选择最适合的版本控制系统。
Git配置
1.打开Git bash
2.设置用户信息
git config --global user.name "username"
git config --global user.email "username@emai.com"
3.查看配置信息
git config --global user.name
git config --global user.email
4.为常用指令配置别名(可选,推荐以下配置)
打开用户目录创建.bashrc文件。部分windows用户无法创建点开头文件,也可以打开gitbash,执行 touch ~/.bashrc
在.bashrc文件文件中输入一下内容:
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'
打开gitbash,执行source ~/.bashrc
5.
理解工作区与暂存区的区别
Git有三个主要的工作区域:工作区(working directory)、暂存区(staging area)和版本库(repository)。
工作区是指您电脑文件系统上用于修改文件的目录。在这里,您可以创建、编辑和删除文件。
暂存区是一个中间状态,它充当了您提交更改的缓冲区。在Git中,您必须明确地将文件添加到暂存区,然后才能将其提交到版本库中。这样做的好处是,您可以对每个更改进行精细控制,并确保只提交需要保存的更改。
版本库包含Git存储库的所有历史记录和元数据。它是Git存储库的核心组成部分,是由Git自动维护的。
-工作区--》暂存区 : git add .
-暂存区--》 仓库: git commit -m “commit message 01”
-查看状态 : git status
-版本回退 :git reset --hard commitID
-查看分支 :git branch
-创建并切换分支 : git checkout -b 分支名
-分支合并 : git merge 分支名 (首先要切换到要合并到的目标分支)
-删除分支(删除已完成合并分支):git branch -d 分支名
-删除分支(强制删除):git branch -D 分支名
处理冲突
当两个分支上的代码修改了同一部分,并且尝试将这两个分支合并时,就会发生代码冲突。Git提供了以下步骤来解决冲突:
- 运行
git status
命令查看哪些文件包含冲突。 - 编辑有冲突的文件,手动解决文件中的冲突。
- 对编辑后的文件进行
git add
,标记为已解决冲突的文件。 - 使用
git commit
提交更改,Git 会自动生成一个合并提交,其中包含各自分支中的更改。
注意:在解决冲突前,最好先备份当前的代码状态,以免不小心破坏代码库。另外,在处理冲突之前,可以通过运行 git diff
命令来查看冲突的源代码,以便更好地理解要解决的问题。
多人协作分支管理策略
在 Git 中,常见的分支管理策略包括以下几个方面:
1.main 分支:
•主分支,最终的、稳定的、经过测试没有 bug 的、可部署于生产
环境的分支
•只能由 release 和 hotfix 分支合并,任何情况下都不能直接修
改代码
2.dev 分支:
•主要开发分支,贯穿于整个项目的生命周期
•始终保持最新版本,功能模块开发任务交给 feature 分支,测试
任务交给 release 分支
3.hotfix 分支:
•热修复分支,当 main 分支部署到生产环境后发生紧急状况,需要
及时处理时,该分支负责热修复,即在保证应用不下线的条件下,
对 bug 进行紧急修复
•该分支以 main 分支为基线,修复 bug 后,合并到 main 分支部
署上线,同时也合并到 dev 分支保持最新进度
•命名规则: hotfix/NAME 或 hotfix-NAME
4.feature 分支:
•功能模块开发分支,对应于一个特定的功能模块
•该分支以 dev 分支为基线,完成开发工作后再合并到 dev 分支
•命名规则:feature/NAME 或 feature-NAME
5.release 分支:
•预发布分支,在发布正式版本前进行全面测试和修复
•该分支以 dev 分支为基线进行全面测试,若发生 bug 则可直接在
该分支修复并提交
•经过测试没有问题之后,合并到 main 分支部署上线,同时也合并
到 dev 分支保持最新进度
•命名规则:release/NAME 或 release-NAME
通过采用合适的 Git 分支管理策略,可以帮助团队更好地组织和管理代码,提高团队的协作能力和生产效率。除了上述常见的分支管理策略,还可以根据团队的具体需求和工作流程定制适合自己的分支管理策略。