前言
在当今快速发展的软件工程领域,版本控制已成为不可或缺的一部分,而Git作为目前最流行的分布式版本控制系统之一,其重要性不言而喻。无论是个人项目还是团队合作,Git都提供了强大的工具来跟踪变更历史、支持多人协作、简化代码合并过程以及保护代码的安全性。
在学习鸿蒙(HarmonyOS)开发的过程中,我发现Git不仅帮助我有效地管理项目的不同版本,还促进了与其他开发者的沟通与协作。通过使用Git,我们能够更轻松地处理复杂的代码集成问题,并保持代码库的整洁与有序。
1.安装git官方网址:Git
也可以参考文档,包含所有操作系统的安装方法
2.git简单介绍
版本控制系统: 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
作用:
- 记录(项目)文件变化形成一个个版本
- 查看版本记录信息
- 将文件切换到指定版
git的通用操作流程如下图
常用的命令
首先你想要管理的文件夹中来打开git bash窗口,这样将来git的命令就只管理这个文件夹中的内容
git 配置用户信息
git config --global user.name "用户名" //全局配置用户名git config --global user.email "邮箱" //全局配置邮箱git config --list //查看全局配置信息`
初始化本地Git仓库
# 初始化本地仓库 git init
命令框
成功后文件会显示一个‘.git’的文件夹,说明初始化成功了
添加文件到本地仓库并查看追踪状态
简单讲就是如果你的项目,或者说是文件修改了,包括添加文件、修改文件、删除文件等操作
添加所有文件到暂存区(点表示所有文件)
#添加所有文件到暂存区(点表示所有文件) git add .
暂存区呢就是当我们对项目的文件进行修改后,这些修改并不会立即被Git记录下来。我们需要将这些修改添加到暂存区,然后再进行提交操作。这样的设计让我们可以更加灵活地管理我们的变更,而不是一股脑儿将所有的修改都提交到版本库
记录到版本库
# 记录到版本库 git commit -m "注释"
注意:
如果工作区中的文件有改动,则继续使用 git add . 和 git commit -m '注释' 完成新版本的提交
git status命令是在每次git add .以后可以用来查看工作区中变动的文件状态,一旦commit了可以用但是没有信息显示
git log 命令是在每次 git commit以后可以用来查看版本库的,如果已经有了版本,git log可以随时来输入查看
查看及切换历史版本
# 简略方式查看log信息 git log --oneline
# 完整方式查看log信息,如果出现无法退出,可以按 q git log
# 切换到指定版本 git reset --hard 版本号
# 查看完整历史(版本切换之后git log可能会出现无法查看的情况) git reflog
我修改一下然后再提交一个版本
切换指定版本实际开发中呢,并不常用,一般开发中都是用新版本覆盖之前出错的版本,因为版本来回切换很容易出现其他问题,只有说是app上线后,你的app发现了大的BUG,那就需要切换之前的版本了
git reset --hard 版本号
与远程仓库建立连接
# 本地仓库中添加远程仓库地址 git remote add origin 远程仓库地址
# 移除远程仓库的绑定 git remote remove origin
# 推送本地仓库代码到远程(-u参数表示首次,如果第二次及以后的提交无需加-u) git push -u origin 分支名码云默认是master,github默认是main)
码云 (gitee.com/) 上完成注册并创建 远程仓库
会得到远程仓库地址,然后用命令进行绑定,上传
总的来讲这个流程图样的
克隆远程仓库
克隆远程仓库
git clone 远程仓库地址注意:如果是克隆别人的仓库,是不能通过 git push提交的,因为没有权限提交
然后就可以进行项目编辑了
DevEco Git可视化工具
在鸿蒙开发中呢,也是有可视化的版本控制相对与命令,更加直观,两种方式都是可以的 底层逻辑还是用的命令
初始化仓库
提交文件到仓库中
把远程仓库地址复制过来就🆗了
撤销修改文件
git分支管理
(待更新) Git的分支管理是版本控制系统中最强大的特性之一,它使得开发者能够在不影响主线开发的情况下进行实验性的开发、修复bug或是开发新功能。以下是Git分支管理的一些基本概念和常用操作,帮助你更好地理解和使用分支。
Git分支的基础概念
- 分支(Branch):Git中的分支实际上是指向提交对象的可移动指针。创建分支非常轻量级,几乎不需要任何额外的磁盘空间。
- 主分支(Main/Branch):通常指的是
main或master分支,是项目的“主干”,包含了项目的最新稳定版本。 - 功能分支(Feature Branch):用于开发新功能的分支。一般从主分支创建,开发完成后合并回主分支。
- 修复分支(Bugfix Branch):专门用于修复bug的分支,修复完成后也会合并回主分支。
- 发布分支(Release Branch):当准备发布新版本时,可以从主分支创建发布分支,用于做最后的测试和修复。
- 维护分支(Maintenance Branch):用于维护旧版本的分支,当旧版本需要修复bug时使用。
常用的分支操作
-
创建分支
git branch [branch_name]:创建新分支,但不切换到该分支。git checkout -b [branch_name]:创建并立即切换到新分支。
-
切换分支
git checkout [branch_name]:切换到已存在的分支。git switch [branch_name]:(Git 2.23+)切换到已存在的分支。
-
查看分支
git branch:列出所有本地分支,当前所在分支会高亮显示。git branch -a:列出所有本地和远程分支。
-
删除分支
git branch -d [branch_name]:删除已合并的本地分支。git branch -D [branch_name]:强制删除未合并的本地分支。git push origin --delete [branch_name]:删除远程分支。
-
合并分支
git merge [branch_name]:将指定分支合并到当前分支。- 合并时可能会出现冲突,需要解决后再提交。
-
推送分支
git push -u origin [branch_name]:推送本地分支到远程仓库,并设置追踪关系。git push origin [branch_name]:[remote_branch_name]:将本地分支推送到远程仓库的指定分支。
-
拉取分支
git pull origin [branch_name]:从远程仓库拉取更新并合并到当前分支。git fetch origin:仅从远程仓库获取更新,不自动合并。
分支管理的最佳实践
- 保持主分支的稳定性:只有经过充分测试的功能和修复才能合并到主分支。
- 定期同步分支:在开发过程中,定期从主分支拉取最新的代码,以减少合并时的冲突。
- 明确命名规则:分支命名应清晰反映其用途,例如使用
feature/前缀表示功能分支。 - 限制长期存在的分支:避免长时间不合并或废弃的分支积累过多,影响仓库的整洁度。
通过合理的分支管理,可以提高开发效率,简化团队协作流程,并确保项目的高质量交付。
git冲突管理
(待更新) 在使用Git进行版本控制时,冲突是不可避免的一部分,尤其是在多人协作的环境中。当两个或多个开发者对同一个文件的同一部分进行了不同的修改,并试图将这些修改合并到主分支或其他分支时,Git无法自动确定应该保留哪种修改,这时候就需要人工干预来解决冲突。
解决冲突的基本步骤
-
识别冲突 当执行
git pull或git merge时,如果出现冲突,Git会停止合并过程,并标记出发生冲突的文件。你可以通过git status命令查看冲突的文件列表。 -
查看冲突细节 打开冲突文件,你会看到类似下面的标记:
<<<<<<< HEAD // 开发者A的修改 ======= // 开发者B的修改 >>>>>>> other_branch这些标记指出了冲突的位置,你需要决定保留哪一部分修改,或者如何将两部分修改合并起来。
-
手工解决冲突
- 如果一方的修改更为关键,则可以直接删除另一方的修改标记。
- 如果双方的修改都有价值,尝试将两者结合起来,形成新的代码逻辑。
- 修改完成后,删除上述提到的所有冲突标记。
-
标记冲突解决 解决完冲突后,需要将文件添加到暂存区,以便下次提交时包含解决后的代码:
git add [file] -
完成合并 冲突解决完毕后,继续之前的合并操作:
git commit -m "解决冲突"
避免冲突的小技巧
- 频繁提交和同步:经常提交你的工作,并且定期从远程仓库拉取最新的代码,这样可以减少每次合并时的变更量,从而降低冲突的可能性。
- 良好的分支策略:合理使用分支,尽量保证每个分支负责特定的功能或修复,减少不同开发者在同一文件上同时工作的机会。
- 代码审查:在合并之前进行代码审查,可以提前发现可能的冲突,并及时解决。
通过遵循上述步骤和建议,你可以有效地解决Git中的冲突问题,并维持团队项目的顺利进展。
总结
本总结旨在回顾我在实际开发中应用Git的经验,分享一些常用的操作命令及其应用场景,希望能为同样在学习使用Git的朋友提供一定的参考与帮助。无论是Git的新手还是有一定经验的开发者,相信都能从中找到对自己有用的知识点。