Git基础入门:从安装到高级实战指南

Git 是一种分布式版本控制系统,它广泛用于软件开发和项目管理领域,提供了一个简单高效的工具来跟踪文件的修改记录,并允许多个开发者协作。本文档将从基础知识开始介绍,逐步深入到高级用法。

1. 安装 Git

Linux:

在大多数 Linux 发行版中可以直接通过包管理器安装 Git。

1
sudo apt-get update && sudo apt-get install git #对于Debian/Ubuntu用户

或者

1
sudo yum install git #对于CentOS/RHEL用户

Windows 和 macOS:

建议从官网下载 Git 最新版本的安装程序进行安装:https://git-scm.com/downloads

2. 配置 Git

在第一次使用前,需要配置你的用户名和邮箱。这是重要的识别信息。

1
2
git config --global user.name "Your Name"
git config --global user.email you@example.com

可以查看已有的配置:

1
git config --list

3. 初始化 Git 仓库

在当前目录下初始化一个新的仓库或检查一个现存的仓库是否存在。

1
2
3
4
5
6
# 在新目录中创建新的 Git 仓库
mkdir new_repo && cd $_
git init

# 检查现有目录是否为 Git 仓库
git rev-parse --is-inside-work-tree

4. 基本操作

添加文件到暂存区

1
2
3
git add <file>
# 或者将整个目录下的所有文件添加进来
git add .

提交更改

提交已添加到暂存区的变更。

1
git commit -m "Initial commit"

5. 查看状态和历史记录

检查仓库的状态,包括未跟踪、修改等信息。

1
git status

查看提交日志以了解项目的历史。

1
2
3
git log
# 或者更详细的输出
git log --oneline --graph --decorate --all

6. 分支管理

创建新分支并切换至该分支

1
2
3
4
git branch featureA # 创建新的分支 featureA
git checkout featureA # 切换到 featureA
# 或者结合命令一起使用:
git checkout -b featureB

合并分支

将一个分支合并到当前工作区。

1
git merge featureA

7. 远程仓库操作

克隆远程仓库

克隆一个项目至本地。

1
2
3
git clone <remote-repo-url>
# 指定一个不同的目录名:
git clone <remote-repo-url> my_project_name

推送代码到远程分支

将本地更改推送到远程主分支(main/master)或任何其他分支。

1
2
3
git push origin main # 推送到名为 "main" 的远程分支
# 如果需要推送一个新创建的分支:
git push -u origin featureA

拉取更新

从远程仓库拉取最新的代码到本地。

1
git pull origin main

8. 解决冲突

当合并或拉取时遇到文件冲突,需手动解决。编辑相关文件后添加并提交变更。

1
2
3
4
# 添加解决的文件
git add .
# 提交更改
git commit -m "Resolved conflicts in file"

详细查看冲突内容可直接打开文件查看标记,或使用命令行工具如:

1
git diff --name-status

9. 其他有用的命令和功能

  • 查看远程仓库详情:git remote -v
  • 删除本地分支(不会从远程删除):git branch -d featureB
  • 撤销对暂存区的修改:git reset HEAD <file>
  • 恢复工作目录中的文件到上次提交的状态:git checkout -- <file>

10. 使用 Git 的最佳实践

分支策略

采用明确的工作流,如 GitFlow 或 GitHub Flow。

  • GitFlow: 主分支维护稳定版本,开发在其他独立的分支中进行;功能完成后再合并至开发主分支(develop)。
  • GitHub Flow: 所有工作都在非主分支上完成,并通过拉取请求(pull request)的方式提出合并到主分支。

良好的提交信息

确保每次提交都包含有意义的信息,以便于他人理解其目的和内容。遵循标准格式:

1
2
3
fix: 修改错误
feat: 添加新特性
docs: 更新文档