DukeDuke
主页
文档转换
关于我们
主页
文档转换
关于我们
  • Linux 系统

    • Linux 系统管理
    • Linux 网络管理
    • Linux 文件管理
    • Linux 命令大全
  • Nginx Web 服务器

    • Nginx 安装 与 配置
    • Nginx 负载均衡
    • Nginx SSL证书配置
    • Nginx Keepalived 高可用
  • Docker 容器

    • Docker 简介
    • Docker 安装与配置
    • Docker 命令
    • Docker 部署 Nginx
    • Docker 部署 MySQL
    • Docker 部署 Redis
  • 服务器

    • 塔式服务器
    • 机架式服务器
    • 刀片服务器
  • Git 版本控制
  • Jenkins 持续集成
  • Jmeter 性能测试
  • Let's Encrypt 免费SSL证书

GIT 安装与使用

Git 简介与作用

Git 是一个用来管理代码和文件的工具,就像是一个超级记事本,可以记录你对文件做的所有修改。它的主要作用是:

  1. 记录文件的所有修改历史,你可以随时查看或回到之前的版本
  2. 让多人可以同时开发同一个项目,而不会互相影响
  3. 可以创建不同的分支来开发新功能,开发完成后再合并到主项目

简单来说,Git 就是一个帮你管理代码版本、方便团队协作的工具。它最初是由 Linux 的创始人 Linus Torvalds 开发的,现在已经成为最流行的版本控制工具。

安装指南

Windows 安装

  1. 访问 Git 官网下载页面:https://git-scm.com/download/win
  2. 下载 Windows 安装程序
  3. 运行安装程序,按照向导完成安装
  4. 安装完成后,打开命令提示符或 PowerShell,输入 git --version 验证安装

基础配置

全局配置

# 设置用户名和邮箱
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

# 设置默认编辑器
git config --global core.editor "vim"

# 设置默认分支名
git config --global init.defaultBranch main

常用配置

# 设置自动着色
git config --global color.ui true

# 设置换行符处理
git config --global core.autocrlf input  # Linux/Mac
git config --global core.autocrlf true   # Windows

# 设置常用命令别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit

基本使用

创建仓库

# 初始化新仓库
git init

# 克隆远程仓库
git clone <repository-url>

基本操作

# 查看状态
git status

# 添加文件到暂存区
git add <file>
git add .  # 添加所有文件

# 提交更改
git commit -m "提交说明"

# 查看提交历史
git log

分支操作

# 创建分支
git branch <branch-name>

# 切换分支
git checkout <branch-name>
git switch <branch-name>  # Git 2.23+

# 创建并切换分支
git checkout -b <branch-name>

# 合并分支
git merge <branch-name>

远程操作

远程仓库管理

# 添加远程仓库
git remote add origin <repository-url>

# 查看远程仓库
git remote -v

# 推送代码
git push origin <branch-name>

# 拉取代码
git pull origin <branch-name>

协作工作流

  1. 从远程仓库拉取最新代码
  2. 创建功能分支进行开发
  3. 提交更改并推送到远程
  4. 创建 Pull Request 请求合并

高级特性

暂存操作

# 暂存当前修改
git stash

# 查看暂存列表
git stash list

# 应用暂存
git stash apply
git stash pop  # 应用并删除

撤销操作

# 撤销工作区修改
git checkout -- <file>

# 撤销暂存区修改
git reset HEAD <file>

# 撤销提交
git reset --soft HEAD^  # 保留修改
git reset --hard HEAD^  # 删除修改

标签管理

# 创建标签
git tag <tag-name>

# 创建带注释的标签
git tag -a <tag-name> -m "标签说明"

# 推送标签
git push origin <tag-name>

常见问题解决

配置问题

# 查看所有配置
git config --list

# 重置配置
git config --global --unset <key>

合并冲突

当多人同时修改同一个文件的同一个部分时,Git 无法自动决定保留哪个版本,这时就会产生合并冲突。以下是处理合并冲突的步骤:

  1. 识别冲突

    # 查看冲突文件
    git status
    

    冲突文件会显示为 "both modified" 状态

  2. 解决冲突

    • 打开冲突文件,你会看到类似这样的标记:
      <<<<<<< HEAD
      你的修改
      =======
      其他人的修改
      >>>>>>> branch-name
      
    • 手动编辑文件,选择要保留的代码
    • 删除冲突标记(<<<<<<< HEAD, =======, >>>>>>> branch-name)
  3. 标记解决

    # 解决完冲突后,将文件添加到暂存区
    git add <conflicted-file>
    
  4. 完成合并

    # 提交合并结果
    git commit -m "解决合并冲突"
    
  5. 预防冲突的建议

    • 经常从主分支拉取更新
    • 与团队成员沟通修改范围
    • 使用小粒度的提交
    • 及时处理冲突,不要积累
  6. 使用工具解决冲突

    • 使用 VS Code、IntelliJ IDEA 等编辑器的内置合并工具
    • 使用专门的合并工具如 Beyond Compare、KDiff3
    • 使用 git mergetool 命令启动配置的合并工具
  7. 放弃合并

    # 如果合并太复杂,可以放弃本次合并
    git merge --abort
    

版本回滚操作

有时候我们需要回到之前的某个版本,比如发现新代码有问题,或者想看看之前的代码是什么样的。以下是常用的回滚操作:

  1. 查看历史版本

    # 查看所有提交记录
    git log
    

    每条记录都会显示一个 commit id(类似 abc1234),这就是版本的唯一标识。

  2. 回滚到之前的版本

    # 方式一:保留修改内容(推荐)
    git reset --soft <commit-id>
    
    # 方式二:完全删除修改内容(谨慎使用)
    git reset --hard <commit-id>
    
    • --soft:回滚后,你的修改还在,只是回到了未提交的状态
    • --hard:回滚后,你的修改会被完全删除,请谨慎使用
  3. 回滚到上一个版本

    # 回滚到上一个版本
    git reset --hard HEAD^
    

    HEAD^ 表示上一个版本,HEAD^^ 表示上上个版本

  4. 如果回滚错了,想恢复

    # 查看所有操作记录
    git reflog
    
    # 恢复到指定版本
    git reset --hard <commit-id>
    

    reflog 可以查看所有的操作记录,包括已经回滚的版本

  5. 只回滚某个文件

    # 恢复某个文件到指定版本
    git checkout <commit-id> <文件名>
    

    这样只会恢复指定的文件,其他文件保持不变

  6. 回滚远程仓库

    # 强制推送到远程
    git push -f origin <分支名>
    

    注意:强制推送会影响其他同事,使用前请先沟通

  7. 回滚前的小建议

    • 回滚前最好先创建一个新分支,以防万一
    • 使用 --soft 回滚更安全,因为不会丢失代码
    • 如果回滚远程仓库,一定要先和团队沟通
最近更新:: 2026/4/17 13:21
Contributors: Duke
Next
Jenkins 持续集成