学习笔记--Git分布式版本控制

常见的 Git 命令及其作用:

基础命令

  1. git init - 初始化一个新的 Git 仓库
  2. git clone <url> - 克隆远程仓库到本地
  3. git add <file> - 将文件添加到暂存区
  4. git commit -m "message" - 提交暂存区的更改
  5. git status - 查看工作区和暂存区状态
  6. git diff - 查看工作区与暂存区的差异

分支操作

  1. git branch - 查看、创建或删除分支
  2. git checkout <branch> - 切换分支
  3. git merge <branch> - 合并指定分支到当前分支
  4. git branch --set-upstream-to=origin/<branch> - 设置上游分支

远程操作

  1. git pull - 从远程仓库获取并合并更改
  2. git push - 将本地更改推送到远程仓库
  3. git fetch - 从远程仓库获取最新数据但不合并

查看历史

  1. git log - 查看提交历史
  2. git reflog - 查看操作历史

Git版本控制架构图

workspace :工作区,就是平时存放,编辑,修改项目代码的地方
index / stage :暂存区,用于临时存放改动,事实上它只是一个文件,保存即将提交到文件列表的信息
Repository : 仓库区(本地仓库),就是安全存放数据的位置,这里面有提交所有的版本的数据。其中HEAD指向最新放入仓库的版本
Remote:远程仓库,托管代码的服务器

代码冲突解决指南

冲突成因

        1.开发者没有及时拉取项目代码,导致在过旧版本(如1.0)的代码基础上编译,上传时与现有版本(如1.5)严重脱节,导致代码合并时产生冲突。

        2.开发者与团队成员没有沟通好代码的修改意图,导致合并时代码产生冲突。

如何预防

  1. 频繁拉取:每天开工前先git pull,设置桌面提醒每小时拉取一次

  2. 小步提交:别攒大招!单个功能拆分提交,减少冲突范围

  3. 沟通为王:修改公共文件前在群里吼一嗓子,用飞书机器人自动提醒

  4. 分支策略:推荐Git Flow工作流,feature分支开发完及时合并

拓展学习:Git Flow工作流

图例

图解

develop分支(开发分支):

包含项目的完整历史记录,而 main分支将只包含最新的生产版本。其他开发人员应从develop分支clone创建一个本地跟踪分支。

Feature分支(功能分支):

每个新功能都应该创建自己的功能分支,如果需要备份/协作可以将其推送到中央存储库。但是,feature分支不应该从main分支拷贝,而是从最新的开发分支拷贝创建。当一个功能完成后,它会被合并回develop。feature分支不应该直接与 main 交互。

Release分支(发布分支):

一旦 develop 具备发布条件,我们就可以从 develop 分支分支发布。创建release分支后会启动下一个发布周期,因此在此之后不能添加新功能——只有bugfix、文档编辑和其他面向发布的任务才能在release分支中进行。但具备发布条件后,发布分支会合并到 main 分支中,并打上版本号标记。此外,我们还应该重新合并到develop中,因为从创建release以来可能存在变化。

Hotfix分支(热修复分支):

hotfix分支用于快速修补生产版本。hotfix分支和release分支、feature分支很像,只是它基于 main分支 而不是develop分支,它是唯一应该直接从 main 分支clone的分支。修复完成后,hotfix分支将合并到main分支和develop分支(或当前版本分支)中,并且main分支应使用更新的版本号进行标记。

Git管理技巧补充

对于某些没有必要上传到远程仓库的数据和文件,可以通过 .gitignore 文件来控制忽略掉这部分文件的上传。

具体步骤:

1. 创建 .gitignore 文件

在项目根目录下创建 .gitignore 文件:

#打开终端输入
touch .gitignore

2. 添加要忽略的文件夹

在 .gitignore 文件中添加要忽略的文件夹路径:

# 忽略整个文件夹
folder_name/

# 忽略特定路径下的文件夹
path/to/folder/

# 忽略所有名为特定名称的文件夹
node_modules/
dist/
build/

3. 常见的忽略规则

  • folder/ - 忽略整个文件夹
  • **/folder/ - 忽略所有路径下的同名文件夹
  • folder/* - 忽略文件夹内所有内容,但保留文件夹本身
  • folder/**/*.log - 忽略文件夹及其子文件夹中的所有 .log 文件

4. 如果文件夹已经被跟踪

如果要忽略的文件夹已经被 Git 跟踪,需要先从缓存中移除:

# 移除单个文件夹
git rm -r --cached folder_name

# 提交更改
git commit -m "Remove folder from tracking"

5. 提交 .gitignore 文件

git add .gitignore
git commit -m "Add .gitignore file"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值