Git 简介和基础使用

Git 简介和基础使用

  • [1.Git 入门](#1.Git 入门)
    • [1.1 版本控制简介](#1.1 版本控制简介)
    • [1.2 安装 Git](#1.2 安装 Git)
    • [1.3 配置 Git](#1.3 配置 Git)
    • [1.4 创建 Git 仓库](#1.4 创建 Git 仓库)
    • [1.5 基本工作流程](#1.5 基本工作流程)
    • [1.6 文件状态管理](#1.6 文件状态管理)
  • [1.7 远程仓库管理](#1.7 远程仓库管理)
  • [1.8 git commit 规范](#1.8 git commit 规范)
  • [1.9 vscode中git的使用](#1.9 vscode中git的使用)
  • 2.分支管理
  • [3.Git 进阶操作](#3.Git 进阶操作)
    • [3.1 设置别名](#3.1 设置别名)
    • [3.2 标签管理](#3.2 标签管理)
    • [3.3 版本回退](#3.3 版本回退)
    • [3.4 储藏更改](#3.4 储藏更改)
    • [3.4 子模块](#3.4 子模块)
  • [4.Git 团队协作](#4.Git 团队协作)
    • [4.1 git工作流](#4.1 git工作流)
    • [4.2 分支策略](#4.2 分支策略)
    • [4.3 Pull Request](#4.3 Pull Request)
    • [4.4 代码冲突解决](#4.4 代码冲突解决)
  • [5.Git 高级技巧](#5.Git 高级技巧)
    • [5.1 交互式 rebase](#5.1 交互式 rebase)
    • [5.2 cherry-pick](#5.2 cherry-pick)
    • [5.3 git revert](#5.3 git revert)
    • [5.4 git reflog](#5.4 git reflog)
    • [5.4 Git Hooks](#5.4 Git Hooks)
    • [5.5 git clone url --depth 1](#5.5 git clone url --depth 1)
  • [6.GitLab 与远程仓库协作](#6.GitLab 与远程仓库协作)
    • [6.1 GitLab 简介](#6.1 GitLab 简介)
    • [6.2 GitLab 基本操作](#6.2 GitLab 基本操作)
    • [6.3 GitLab 远程仓库操作](#6.3 GitLab 远程仓库操作)
    • [6.4 GitLab 分支与合并请求 (Merge Request)](#6.4 GitLab 分支与合并请求 (Merge Request))
    • [6.5 GitLab CI/CD 简介](#6.5 GitLab CI/CD 简介)
  • [7.Git 实战案例](#7.Git 实战案例)
  • 8.常见问题及解决方案
  • 附录
    • [Git 学习资源推荐](#Git 学习资源推荐)

1.Git 入门

1.1 版本控制简介

  • 什么是版本控制
  • 集中式 vs 分布式版本控制
  • Git 的优势

1.2 安装 Git

Git-2.31.0-64-bit
git-2.31.0

1.3 配置 Git

  • 查看配置信息
  • 配置用户信息
  • 配置SSH秘钥(可选但非常推荐)
    ai自行搜索:git如何配置ssh秘钥

1.4 创建 Git 仓库

    1. 在本地初始化一个新的 Git 仓库

    初始化:
    提交:
    关联远程仓库:

    1. 从远程仓库克隆到本地(新手推荐)

    git clone <远程仓库的 URL>
    上面的URL可以是传统意义的URL,下载时需要输入用户名和密码。
    更多的时候是一个git开头的地址,需要配置SSH秘钥(参考1.3)。

    1. 当前 .git 目录

1.5 基本工作流程


  • 工作区、暂存区和版本库
  • 添加文件到暂存区 (git add)
  • 提交更改到仓库 (git commit)
  • 本次仓库推送到远程仓库(git push
  • 查看提交历史 (git log)

1.6 文件状态管理

  • 查看文件状态 (git status)
  • 查看提交历史(git log)
  • 忽略文件 (.gitignore)
  • 当前仓库git配置(.git)
  • 撤销修改 (git checkout, git restore)
  • 删除文件 (git rm)

1.7 远程仓库管理

  • 添加远程仓库 (git remote add)
  • 查看远程仓库信息 (git remote -v)
  • 推送本地提交到远程仓库 (git push)
  • 拉取远程仓库更新到本地 (git pull)
  • 克隆远程仓库 (git clone)

1.8 git commit 规范

参考文档:https://juejin.cn/post/6844903866451001352

ps:建议经常git commit

问题:如果经常git commit会导致历史记录非常多和琐碎,如何解决?

1.9 vscode中git的使用

工作区、暂存区和版本库的切换,等等其他

2.分支管理

  • 创建分支 (git branch)
  • 删除分支 (git branch -d)
  • 切换分支 (git checkout)
  • 合并分支 (git merge)
    • 快进合并 (fast-forward)
    • 递归合并
    • 三方合并(three-way-merge)

解决冲突(重点,业务开发中经常会发生,专业班一定要掌握)

3.Git 进阶操作

3.1 设置别名

3.2 标签管理

  • 创建标签 (git tag)
  • 查看标签 (git tag)
  • 推送标签到远程仓库 (git push --tags)
  • 删除标签 (git tag -d)

3.3 版本回退

  • 查看提交历史 (git log)
  • 回退到指定版本 (git reset)
  • 撤销回退 (git reflog)

3.4 储藏更改

  • 储藏当前工作目录 (git stash)
  • 查看储藏列表 (git stash list)
  • 恢复储藏内容 (git stash apply)
  • 删除储藏内容 (git stash drop)

3.4 子模块

  • 添加子模块 (git submodule add)
  • 初始化子模块 (git submodule init)
  • 更新子模块 (git submodule update)
  • 删除子模块

4.Git 团队协作

4.1 git工作流

4.2 分支策略

  • 主分支 (master/main)
  • 开发分支 (develop)
  • 功能分支 (feature)
  • 发布分支 (release)
  • 修复分支 (hotfix)

4.3 Pull Request

  • 创建 Pull Request
  • 代码审查
  • 合并 Pull Request

4.4 代码冲突解决

  • 冲突产生的原因
  • 手动解决冲突
  • 使用工具解决冲突

5.Git 高级技巧

5.1 交互式 rebase

  • 修改提交历史
  • 合并提交
  • 删除提交

5.2 cherry-pick

  • 选择性地应用提交

5.3 git revert

  • 取消指定的提交内容

5.4 git reflog

  • 本地仓库中所有引用(如分支、HEAD)的更新历史

5.4 Git Hooks

  • 自定义 Git 行为
  • 常用钩子介绍
  • 前端代码规范中的husky原理

5.5 git clone url --depth 1

  • 对于非常大的仓库,部分克隆,而不是完整的历史记录

6.GitLab 与远程仓库协作

6.1 GitLab 简介

  • git 和 gitlab关系
  • 什么是 GitLab,以及页面预览
  • GitLab 的核心功能(代码托管、CI/CD、项目管理等)
  • GitLab 与 GitHub 的区别

6.2 GitLab 基本操作

  • 创建 GitLab 项目
  • 设置项目可见性(私有、内部、公开)
  • 添加项目成员并分配权限
  • 设置保护分支(重点)
  • 克隆 GitLab 项目到本地 (git clone)

6.3 GitLab 远程仓库操作

  • 关联本地仓库与 GitLab 远程仓库 (git remote add)
  • 推送本地分支到 GitLab (git push)
  • 从 GitLab 拉取更新 (git pull)

6.4 GitLab 分支与合并请求 (Merge Request)

  • 创建分支并推送到 GitLab
  • 提交合并请求 (Merge Request)
  • 代码审查与讨论
  • 解决合并冲突
  • 完成合并请求

6.5 GitLab CI/CD 简介

  • 什么是 CI/CD
  • 配置 .gitlab-ci.yml 文件
  • 使用 GitLab Runner 执行自动化任务
  • 实现自动化测试与部署

7.Git 实战案例

💡研发培训院团队协作开发项目git工作流介绍

分支管理


master分⽀:主⼲分⽀,⼀定不能被污染

develop分⽀:开发分⽀,所有的开发都必须在开发分⽀进⾏,所有的修改必须合并到开发分⽀

开发流程

  1. 项⽬初始化后,从master新建test和develop分⽀,分别对应正式环境,测试环境和开发环境
  2. 开发新功能时,从develop新建功能分⽀v1.0(此处以1.0版本举例,具体前面可带自己姓名)
  3. v1.0功能开发完后,合并v1.0到develop分⽀,本地启动develop分⽀测试联调
  4. v1.0测试联调完后,合并develop到test分⽀,部署test分⽀到测试环境进⾏测试
  5. v1.0测试完后,合并develop到master分⽀,部署master分⽀到正式环境上线,并且打tag分⽀
  6. 开发其他版本新功能时,重复2-5步即可
  7. 假如master分⽀发现bug,从master新建bugfix1.0临时分⽀,在bugfix1.0分⽀进⾏修复,修复后,合并bugfix1.0到develop分⽀,合并bugfix1.0到master分⽀,部署master分⽀到正式环境上线并且打tag分⽀tag20231220,之后可删除bugfix1.0分⽀

8.常见问题及解决方案

😃解决方案请自行查阅资料学习。下面是我给出的答案,仅供参考,不一定完全对。

  • 如何撤销上一次提交?
bash 复制代码
 git reset --soft HEAD^
  • 如何修改上一次提交的信息?
bash 复制代码
git commit --amend
  • 如何撤销工作区的更改?
bash 复制代码
 # 撤销指定文件
git checkout -- <filename>

# 撤销所有更改
git checkout -- 
  • 如何删除本地分支?
bash 复制代码
# 安全删除(已合并)
git branch -d <branch-name>

# 强制删除(未合并)
git branch -D <branch-name>
  • 如何删除远程分支?
bash 复制代码
git push origin --delete <branch-name>
  • 本地分支有未提交的内容,如何切换到其他分支?
bash 复制代码
# 暂存更改
git stash

# 切换分支
git checkout <other-branch>

# 恢复更改
git stash pop
  • 如何修改远程仓库地址?(项目迁移时保存历史)
bash 复制代码
git remote set-url origin <new-url>
  • 如何强制推送本地分支到远程?(为什么要强制,什么时候需要强制)
bash 复制代码
git push --force-with-lease origin <branch-name>
  • 如何恢复误删的分支?
bash 复制代码
# 查找提交哈希
git reflog

# 恢复分支
git branch <branch-name> <commit-hash> 
  • 如何解决合并冲突?

编辑冲突文件(<<<<<<<, =======, >>>>>>> 标记)

解决冲突后添加到暂存区:git add

完成合并:git commit

  • 如何回退到某个提交?
bash 复制代码
 # 软回退(保留更改)
git reset --soft <commit-hash>

# 硬回退(丢弃更改)
git reset --hard <commit-hash>
  • 如何修改提交中的某个commit msg?
bash 复制代码
 git rebase -i <commit-hash>^
# 将 pick 改为 reword (r)
  • 如何合并多个提交?
bash 复制代码
git rebase -i HEAD~n
# 将 pick 改为 squash (s) 或 fixup (f)
  • 如何把当前的提交合并到上一个提交中去?
bash 复制代码
git commit --amend --no-edit
  • 如何提交本地的feature分支功能到远程的master分支?
bash 复制代码
# 方法1:合并后推送
git checkout master
git merge feature
git push origin master

# 方法2:通过 Pull Request
git push origin feature
# 然后在 Git 平台创建 PR 合并到 master

附录

Git 学习资源推荐

相关推荐
论迹13 小时前
【Git】-- Git基本操作
git·ubuntu
wxr061617 小时前
GIT学习
git·学习
猫头虎19 小时前
2026最新|GitHub 启用双因素身份验证 2FA 教程:TOTP.app 一键生成动态验证码(新手小白图文实操)
git·开源·gitlab·github·开源软件·开源协议·gitcode
爱学英语的程序员20 小时前
让AI 帮我做了个个人博客(附提示词!)
人工智能·git·vue·github·node·个人博客
liu****21 小时前
git工具
git·python·算法·机器学习·计算机基础
wxr06161 天前
git无法克隆
git
cooldream20091 天前
Git 拒绝推送(Push Rejected)问题全解析与解决方案实战指南
git
wxr06161 天前
GIT无法push
git·gitee
装不满的克莱因瓶1 天前
【踩坑】IDEA提交Git .gitignore忽略文件不起作用
java·git·.gitignore·踩坑
cos2 天前
Fork 主题如何更新?基于 Ink 构建主题更新 CLI 工具
前端·javascript·git