Skip to content

Git

收录了一些git相关的知识。

1. 常用命令

  • git init:初始化本地git仓库(创建新仓库)
  • git add:添加文件到暂存区
  • git commit:提交暂存区到本地仓库
  • git status:查看当前版本状态(是否修改)
  • git push:将当前分支push到远程分支
  • git pull:获取远程分支并merge到当前分支
  • git clone:clone远程仓库
  • git branch:显示本地分支
  • git branch -d:删除分支
  • git checkout:检出已存在的分支或文件
  • git checkout -b:创建+切换分支
  • git merge:合并分支

2. git stash

在 Git 中,stash(存储)是一种临时保存工作目录和暂存区改动的方法,让你可以快速切换上下文,而无需提交未完成的代码。以下是关键点解析:

核心作用

  • 临时保存改动:将当前未提交的改动(包括工作目录和暂存区的修改)保存到一个栈结构中,之后可以随时恢复。
  • 解决场景:当你需要切换分支或处理紧急任务,但当前代码未完成、不适合提交时,用 stash 暂存改动。

常用命令

  1. 保存当前改动

    bash
    git stash
    • 默认会保存工作目录和暂存区的修改(不包括未跟踪的文件)。
    • 添加 -u--include-untracked 可以包含未跟踪的文件:
      bash
      git stash -u
  2. 查看存储列表

    bash
    git stash list
    • 显示所有存储项,格式如 stash@{0}: WIP on 分支名: 最近提交的哈希和消息
  3. 恢复存储的改动

    • 恢复最近一次的存储(不删除存储记录):
      bash
      git stash apply
    • 恢复指定存储(如 stash@{1}):
      bash
      git stash apply stash@{1}
    • 恢复并删除存储(pop):
      bash
      git stash pop
  4. 删除存储

    • 删除最近一次的存储:
      bash
      git stash drop
    • 删除所有存储:
      bash
      git stash clear
  5. 创建带描述的存储

    bash
    git stash save "描述信息"
    • 便于后续识别存储内容。

适用场景

  • 切换分支:当前分支有未提交代码,但需要切换到其他分支修复 Bug。
  • 紧急任务:临时保存当前工作,处理更高优先级的任务。
  • 实验性代码:不确定改动是否保留时,先暂存再决定。

注意事项

  • 存储是临时的:长期未恢复的存储可能被遗忘,建议尽快处理。
  • 冲突风险:恢复存储时若与当前代码冲突,需手动解决冲突。
  • 不包含未跟踪文件:默认不保存新创建的文件(需加 -u 参数)。

示例流程

bash
# 1. 修改文件后暂存(未提交)
git add file.txt
git stash save "修改了file.txt"

# 2. 切换分支处理其他任务
git checkout another-branch

# 3. 返回原分支并恢复存储
git checkout original-branch
git stash pop

通过 stash,你可以灵活管理未完成的代码,保持工作流整洁。

3. 不同类型的分支

  • master分支:通常用于线上发布使用。它应该始终保持稳定,并且只接受来自其他分支经过充分测试和验证的更改。

  • dev分支:用于平常的开发和测试。它通常包含最新的开发进度,并且可以接受来自功能分支或修复分支的更改。

  • Feature branches(功能分支):用于开发新功能。每个功能分支都应该专注于一个特定的功能,并且在功能完成后合并到dev分支。

  • Hotfix branches(修复分支):用于修复bug。每个修复分支都应该专注于修复一个特定的bug,并且在修复完成后合并到dev分支。

  • Release branches(发布分支):用于准备新版本的发布。它通常从dev分支中创建,并且只接受用于修复bug和准备发布的更改。当新版本准备好发布时,发布分支会被合并到master分支和dev分支。