GIT基础命令和分支管理

发布于:2025-07-04 ⋅ 阅读:(16) ⋅ 点赞:(0)

核心概念

Git是分布式版本控制系统。

  • 分布式架构:每个开发者都有完整的代码历史
  • 快照机制:Git以快照方式记录文件状态
  • 分支轻量化:创建分支快速轻量
  • 数据完整性:通过SHA-1校验和确保数据完整性

版本标识符

  • HEAD^:上一个版本
  • HEAD^^:上上一个版本
  • HEAD~100:往上100个版本

工作区、版本库与暂存区

  • 工作区:可直接编辑的项目目录
  • 版本库.git隐藏文件夹,包含所有历史记录
  • 暂存区.git/index,用于存放准备提交的修改

工作流程

  1. 修改文件(工作区)
  2. git add 添加到暂存区
  3. git commit 提交到版本库

基础命令与版本管理

仓库管理

# 克隆远程仓库
git clone git@example.com:username/mytest.git
# 进入项目目录
cd mytest
# 创建README文件
touch README.md
# 添加文件到暂存区
git add README.md
# 提交并添加说明
git commit -m "add README"
# 推送到远程master分支
git push -u origin master
# 初始化已有文件夹为Git仓库
cd existing_folder
git init
git remote add origin git@example.com:username/mytest.git
git add .
git commit
git push -u origin master
# 推荐:使用ghproxy.net镜像加速
git clone https://ghproxy.net/https://github.com/apache/incubator-devlake.git
# 直接访问GitHub
git clone https://github.com/apache/incubator-devlake.git
# 使用SSH克隆
git clone git@github.com:apache/incubator-devlake.git

基本命令

# 查看远程仓库详细信息
git remote show origin
# 以指定作者信息进行提交
git commit -m "ai commit" --author="ai <example@example.com>"
# 列出所有分支
git branch -a
# 切换到指定分支
git checkout 分支名
# 查看所有配置
git config --list
# 查看用户配置
git config --global --list
# 查看镜像相关配置
git config --global --list | grep url
# 查看特定配置项
git config --global user.name
git config --global user.email

文件操作

# 比较工作区文件与版本库中最新版本的差异
git diff 文件名
# 从指定提交记录中恢复单个文件到暂存区
git reset <commit hash> 文件名
# 丢弃工作区中对文件的所有修改
git checkout -- 文件名
# 从Git仓库和本地文件系统中删除所有匹配的文件
git rm *
# 仅从暂存区删除文件,保留工作区文件
git rm --cached <文件名>

提交管理与版本回退

# 推送所有标签
git push origin --tags
# 推送指定标签
git push origin v0.1.2

版本回退与状态重置

# 彻底回退到上一个版本,丢弃所有本地修改(危险,重写历史,仅限本地分支)
git reset --hard HEAD^
# 如已推送,需强制覆盖远程(高危,慎用!)
git push -f origin master
# 查看所有分支的 HEAD 和 commit 移动历史(reset后悔药)
git reflog

撤销操作与回滚场景

# 场景1:丢弃工作区某个文件的所有本地修改
git checkout -- file

# 场景2:文件已加入暂存区,想撤销暂存区的修改,再丢弃工作区修改
git reset HEAD file   # 先撤销暂存区
git checkout -- file  # 再丢弃工作区

# 场景3:已提交不合适的修改,想回退提交(未推送远程)
git reset --hard HEAD^
# 如已推送,需强制覆盖远程(高危)
git push -f origin 分支名

# 留记录(安全,推荐用于公共分支)
git revert HEAD
git push origin 分支名

回滚策略对比

用法 影响历史 是否产生新commit 协作安全性 推荐场景
git reset --hard 重写/删除 危险 本地私有分支
git revert 追加/保留 安全 任何公共/协作分支

公共分支用revert,本地分支可用reset。reset慎用,revert安全。

分支管理

删除远程分支

# 删除远程分支
git push origin --delete feature_sortindex
# 推送本地分支到远程
git push origin feature_sort
# 同步远程分支状态,清理本地已删除的远程分支引用
git fetch -p origin
# 删除本地的远程跟踪分支引用
git branch -r -d origin/dev

分支命名规范

  • master:主分支,生产环境,禁止直接修改
  • develop:开发分支,最新开发代码
  • feature/xxx:新功能分支,基于develop
  • test:测试分支,功能测试
  • release:预上线分支,UAT测试
  • hotfix/xxx:紧急修复分支,基于master

分支与环境对应关系

分支 功能 环境 可访问
master 主分支 PRO
develop 开发分支 DEV
feature 新特性开发 -
test 功能测试 FAT
release 预上线 UAT
hotfix 紧急修复 -

分支合并(merge)

# 标准合并(可能会快进,历史不保留分支信息)
git merge feature_branch

# --no-ff合并(强制生成一次合并commit,保留分支历史,推荐用于主分支合并)
git merge --no-ff feature_branch

# 合并时添加说明(推荐)
git merge --no-ff feature_branch -m "合并feature_branch,保留分支历史"

标准合并(默认ff)会在分支无分叉时直接快进,历史不留合并记录。–no-ff会生成一次合并commit,便于追溯分支开发历史,适合主分支、release、hotfix等重要分支合并。

提交与忽略规范

提交信息规范

  • commit message建议采用type(scope): subject格式
  • type常用:feat、fix、docs、style、refactor、perf、test、chore、delete、modify、build、ci、revert
# 修正提交信息
git commit --amend -m "新的提交信息"
# 撤销最近的提交并重做(危险,慎用)
git reset --soft HEAD^ # 或 --mixed, --hard

GitIgnore配置

.gitignore用于指定忽略提交的文件列表。

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
.idea
*.iml
*.ipr
.vscode/
*.log
/logs*
*.jar
*.war
*.zip
*.tar.gz
*.cmd

参考链接


网站公告

今日签到

点亮在社区的每一天
去签到