0/5 完成 (0%)

Git介绍

Git是目前世界上最先进的分布式版本控制系统,由Linux之父Linus Torvalds于2005年开发。它被设计用来跟踪源代码在软件开发过程中的变化,但它也可以用于跟踪任何文件集合的变化。

什么是版本控制?

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本的系统。使用版本控制系统可以将特定文件回溯到之前的状态,甚至将整个项目回退到过去某个时间点的状态,比较文件的变化细节,查看最后是谁修改了哪个地方,从而找出导致问题出现的原因,以及追溯代码的编写者等等。

Git版本时间线示意图
图1: Git版本控制时间线示意图

Git与其他版本控制系统的区别

与其他版本控制系统(如SVN)相比,Git具有以下特点:

  • 分布式系统:每个开发者本地都有完整的代码库
  • 快速高效:绝大多数操作在本地完成,无需网络连接
  • 数据完整性:所有数据在存储前都计算校验和,确保完整性
  • 分支管理:创建和切换分支操作非常轻量和快速
  • 存储方式:Git保存的是文件快照,而非差异比较

为什么选择Git?

Git的强大功能和灵活性使其成为现代软件开发的首选工具。据GitHub的调查,超过90%的开发者使用Git作为他们的版本控制系统。学习Git不仅可以帮助你更好地管理代码,也是进入专业软件开发领域的必备技能。

安装与配置

在开始使用Git之前,我们需要先安装并配置Git环境。以下是针对不同操作系统的安装指南。

下载Git

根据您的操作系统选择相应的下载方式:

  • Windows: 访问 Git for Windows 下载安装程序
  • macOS: 通过Terminal运行 brew install git(需要先安装Homebrew)或访问 Git for macOS
  • Linux: 使用包管理器安装,例如Ubuntu上运行 sudo apt-get install git

安装Git

对于Windows用户,运行下载的安装程序并按照安装向导的指示操作。大多数默认选项都可以直接使用。

Git安装向导界面
图2: Git安装向导界面示例

验证安装

安装完成后,打开命令行界面(Windows上的Git Bash、macOS和Linux上的Terminal),输入以下命令验证安装是否成功:

git --version

如果显示Git的版本号,如 git version 2.40.0,则表示安装成功。

基本配置

使用Git的第一件事就是设置你的用户名和邮箱地址。这一点很重要,因为每一个Git提交都会使用这些信息来标识是谁提交了更新:

git config --global user.name "你的名字"
git config --global user.email "your.email@example.com"

你也可以设置默认编辑器和其他配置:

git config --global core.editor "code --wait"  # 设置VSCode为默认编辑器
git config --global init.defaultBranch main  # 设置默认分支名为main

验证配置

要检查你的配置,可以使用以下命令:

git config --list

或者查看特定配置项:

git config user.name
git config user.email

SSH密钥配置

如果你计划使用GitHub、GitLab等远程服务,建议设置SSH密钥来简化身份验证过程。你可以使用以下命令生成SSH密钥:

ssh-keygen -t rsa -b 4096 -C "your.email@example.com"

然后将公钥添加到你的GitHub/GitLab账户中。

创建仓库

在Git中,仓库(Repository)是用来存储项目文件和版本历史的地方。创建Git仓库有两种主要方式:初始化新仓库或克隆现有仓库。

初始化新仓库

要在现有项目或新目录中创建Git仓库,请按照以下步骤操作:

创建项目目录

mkdir my-project
cd my-project

初始化Git仓库

git init

这个命令会创建一个名为 .git 的子目录,其中包含你的新Git仓库所需的所有文件。

Git初始化示意图
图3: 初始化Git仓库过程示意图

添加文件

创建一些文件或修改现有文件后,使用以下命令将它们添加到暂存区:

echo "# My Project" > README.md
git add README.md

要添加所有文件,可以使用:

git add .

提交更改

git commit -m "初始提交"

这样就完成了第一次提交!现在你已经有了一个包含README.md文件的Git仓库。

克隆现有仓库

如果你想获取一份已经存在的Git仓库的拷贝,可以使用 git clone 命令:

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

这会在当前目录下创建一个名为"repository"的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取所有数据,然后检出最新版本的文件。

如果你想自定义本地仓库的名字,可以使用:

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

.gitignore文件

创建Git仓库时,通常需要设置一个 .gitignore 文件,用于指定不需要被Git跟踪的文件(如编译生成的文件、临时文件、个人IDE配置等):

# 忽略编译生成的文件和目录
/bin
/build
/dist

# 忽略日志文件
*.log

# 忽略操作系统和IDE生成的文件
.DS_Store
.idea/
.vscode/

# 忽略依赖目录
/node_modules
/vendor

基本工作流

Git的基本工作流程包括对文件进行修改,将修改添加到暂存区,然后提交更改。下面我们来详细了解这个过程。

Git工作区域

在开始之前,先了解Git的三个主要工作区域:

  • 工作目录(Working Directory):你实际编辑文件的地方
  • 暂存区(Staging Area):用于存放你已标记为下次提交内容的区域
  • Git仓库(Repository):存储项目历史记录的地方
Git工作区域示意图
图4: Git的三个主要工作区域

文件状态

在Git中,文件主要有以下几种状态:

  • 未跟踪(Untracked):Git不知道这个文件的存在
  • 已跟踪(Tracked):Git知道这个文件,并且已经被纳入版本控制
    • 已修改(Modified):文件已修改但尚未暂存
    • 已暂存(Staged):文件已标记为下次提交的内容
    • 已提交(Committed):文件已安全地存储在本地数据库中

基本Git操作

检查状态

要查看哪些文件处于什么状态,可以使用:

git status

如果想看简洁版的状态输出,可以使用:

git status -s

添加更改到暂存区

要开始跟踪新文件,或者将修改的文件添加到暂存区,使用 git add 命令:

git add 文件名    # 添加特定文件
git add .        # 添加所有更改
git add *.html   # 添加所有HTML文件

提交更改

一旦你的暂存区准备妥当,就可以提交更改:

git commit -m "描述你所做的更改"

如果你想跳过暂存区直接提交已跟踪的文件:

git commit -a -m "描述你所做的更改"

查看历史记录

要查看提交历史,使用 git log 命令:

git log             # 显示完整历史记录
git log --oneline   # 每个提交显示为一行
git log --graph     # 以图形方式显示分支和合并历史

查看更改内容

要查看未暂存的更改,使用:

git diff

要查看已暂存的更改,使用:

git diff --staged

避免常见错误

记住提交之前先检查状态,确保没有遗漏任何文件,也没有包含任何不应该提交的文件。良好的提交习惯能让你的项目历史更加清晰,方便日后回溯和协作。

远程仓库

远程仓库是指托管在网络上的项目版本库,可以有多个,一般分为可以拉取(fetch)和推送(push)的远程仓库。在团队协作中,远程仓库是项目成员之间共享代码的中心。

常见的远程仓库服务

  • GitHub:世界上最大的代码托管平台
  • GitLab:支持自托管的Git仓库管理软件
  • Bitbucket:Atlassian公司提供的Git代码托管服务
  • Gitee(码云):国内流行的代码托管平台

管理远程仓库

查看远程仓库

git remote           # 列出远程仓库的简短名称
git remote -v        # 显示远程仓库的URL
git remote show origin  # 查看特定远程仓库的详细信息

添加远程仓库

要添加一个新的远程Git仓库,可以使用:

git remote add <简称> <url>

例如:

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

从远程仓库获取数据

要从远程仓库获取数据,可以使用:

git fetch origin      # 获取远程仓库的所有分支
git fetch origin main  # 只获取远程main分支

fetch 命令只会下载数据到本地仓库,不会自动合并或修改你正在工作的内容。

如果想自动合并,可以使用:

git pull origin main  # 获取并合并远程main分支

推送到远程仓库

将本地分支推送到远程仓库:

git push origin main  # 将本地main分支推送到origin

如果要设置默认上游分支,首次推送可以使用:

git push -u origin main  # 设置上游分支并推送

设置后,以后可以直接使用 git push 命令推送到默认远程分支。

Git推送和拉取示意图
图5: Git推送与拉取操作示意图

重命名和删除远程仓库

git remote rename origin github  # 将origin重命名为github
git remote remove github         # 删除名为github的远程仓库

首次推送到GitHub

如果你在GitHub上创建了一个新仓库,并想将本地已有的仓库推送到GitHub,可以按照以下步骤操作:

# 初始化本地仓库
git init
git add .
git commit -m "初始提交"

# 添加远程仓库
git remote add origin https://github.com/username/repository.git

# 推送到GitHub
git push -u origin main
上一章
返回首页
下一章
Git高级技巧