当前位置: 首页 > backend >正文

Git 常用命令指南:从入门到高效开发

一、Git 是什么?

Git 是一个分布式版本控制系统。它能够高效地管理代码的变更历史,支持多人协作开发,广泛应用于开源项目和企业级开发中。

Git 的核心优势包括:

  • 分布式架构,每个开发者都有完整的代码仓库
  • 高效的分支管理
  • 强大的合并与冲突解决机制
  • 支持非线性开发(如并行开发多个功能)

二、Git 安装与初始化

1. 安装 Git

  • macOS:使用 Homebrew 安装

    brew install git
  • Linux (Ubuntu/Debian)

    sudo apt update && sudo apt install git
  • Windows:下载 Git for Windows 安装包

2. 配置用户信息

首次使用 Git 需要设置用户名和邮箱:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

💡 使用 --global 表示全局配置,适用于所有项目。若仅针对当前项目,去掉该参数即可。


三、Git 基础工作流与常用命令

1. 初始化仓库

在项目根目录创建 Git 仓库:

git init

2. 克隆远程仓库

从远程仓库(如 GitHub、GitLab)克隆代码:

git clone https://github.com/username/repository.git

支持指定目录名:

git clone https://github.com/username/repository.git my-project

3. 查看状态

查看当前工作区的文件状态:

git status

输出会显示:

  • 已修改但未暂存的文件
  • 已暂存待提交的文件
  • 未被跟踪的新文件

4. 添加文件到暂存区

将文件添加到暂存区(Staging Area):

# 添加单个文件
git add filename.txt# 添加所有修改的文件
git add .# 添加所有文件(包括新文件)
git add -A

5. 提交更改

将暂存区的更改提交到本地仓库:

git commit -m "描述本次提交的内容"

推荐提交信息规范:

  • 简洁明了,说明“做了什么”
  • 使用动词开头,如 “fix: 修复登录页样式问题”、“feat: 添加用户注册功能”

💡 使用 git commit -a 可跳过 git add,直接提交所有已跟踪文件的更改(不包括新文件)。


6. 推送到远程仓库

将本地提交推送到远程仓库(如 origin):

git push origin main

7. 拉取远程更新

从远程仓库获取最新更改并合并到当前分支:

git pull origin main

等价于:

git fetch origin main   # 获取远程更新
git merge origin/main   # 合并到当前分支

四、分支管理

分支是 Git 的核心功能之一,支持并行开发。

1. 创建分支

git branch feature/login

2. 切换分支

git checkout feature/login

或一步创建并切换:

git checkout -b feature/login

3. 查看分支

# 查看本地分支
git branch# 查看所有分支(本地 + 远程)
git branch -a# 查看远程分支
git branch -r

4. 合并分支

feature/login 分支合并到 main

git checkout main
git merge feature/login

5. 删除分支

# 删除本地分支
git branch -d feature/login# 删除远程分支
git push origin --delete feature/login

五、查看历史与回退

1. 查看提交历史

git log

常用参数:

  • --oneline:简洁输出
  • --graph:图形化显示分支合并历史
  • -n 5:显示最近 5 条记录
git log --oneline --graph -n 5

2. 查看文件更改内容

# 查看工作区与暂存区的差异
git diff# 查看暂存区与最新提交的差异
git diff --staged# 查看某次提交的具体更改
git show <commit-hash>

3. 撤销更改

  • 撤销工作区修改(未 add):

    git checkout -- filename.txt
  • 撤销暂存区更改(已 add 但未 commit):

    git reset HEAD filename.txt
  • 撤销最近一次提交(保留更改):

    git reset --soft HEAD~1
  • 彻底删除最近一次提交(不保留更改):

    git reset --hard HEAD~1

⚠️ --hard 操作不可逆,请谨慎使用!


六、远程仓库操作

1. 查看远程仓库

git remote -v

2. 添加远程仓库

git remote add origin https://github.com/username/repository.git

3. 推送并设置上游分支

git push -u origin main

4. 获取远程分支信息

git fetch origin

七、实用技巧与最佳实践

1. 使用 .gitignore 忽略文件

在项目根目录创建 .gitignore 文件,指定不希望被 Git 跟踪的文件或目录:

# 忽略 node_modules
node_modules/# 忽略日志文件
*.log# 忽略环境变量文件
.env# 忽略 IDE 配置
.vscode/
.idea/

2. 使用别名简化命令

为常用命令设置别名:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --oneline --graph"

之后可使用 git st 代替 git status,提高效率。

3. 分支命名规范

推荐使用语义化分支名:

  • feature/xxx:新功能开发
  • bugfix/xxx:缺陷修复
  • hotfix/xxx:紧急热修复
  • release/xxx:发布版本

八、常见问题与解决方案

❌ git push 被拒绝?

可能原因:远程有新提交未拉取。
解决:先执行 git pull 合并后再推送。

❌ 合并冲突怎么办?

Git 会在冲突文件中标记冲突区域:

<<<<<<< HEAD
当前分支的代码
=======
远程分支的代码
>>>>>>> branch-name

解决步骤

  1. 手动编辑文件,保留需要的代码
  2. git add 冲突文件
  3. git commit 完成合并
http://www.xdnf.cn/news/16892.html

相关文章:

  • 【Qt】QObject::startTimer: Timers cannot be started from another thread
  • 考研复习-计算机组成原理-第二章-数据的表示和运算
  • Kazam产生.movie.mux后恢复视频为.mp4
  • 第三章-提示词-高级:开启智能交互新境界(13/36)
  • Steam饥荒联机版多人服务器搭建全解析 -- 阿里云Linux系统构建云服务器
  • MPLS LSP
  • Mysql深入学习:慢sql执行
  • C语言基础03——数组——习题
  • 时序论文44 | TwinsFormer:通过两个交互组件重构时间序列内在依赖关系
  • 14. 最长公共前缀
  • 8-verilog-串口接收与发送模块
  • docker 可用镜像列表(长期免费)
  • 嵌入式硬件篇---Openmv
  • Java 高频面试考点(下)
  • 【MySQL安全】什么是SQL注入,怎么避免这种攻击:前端防护、后端orm框架、数据库白名单
  • ELECTRICAL靶机
  • SQL157 更新记录(一)
  • Java企业级应用性能优化实战
  • ABAP SQL更新DB小技巧 WITH INDICATORS
  • W3D引擎游戏开发----从入门到精通【10】
  • 第二节 YOLOv5参数
  • 在 macOS 上通过 Docker 部署DM8 (ARM 架构)
  • 团队独立思考的力量
  • 2025-0803学习记录21——地表分类产品的精度验证
  • MySQL存储过程和触发器
  • 【网络安全】日志文件格式
  • 「源力觉醒 创作者计划」_文心大模型4.5系列开源模型, 从一行代码到一个生态:聊聊开源战略那些事儿,顺便扯扯文心大模型 4.5 的使用心得
  • 题解:P4447 [AHOI2018初中组] 分组
  • ospf综合
  • NX947NX955美光固态闪存NX962NX966