Git介绍
Git是目前世界上最先进的分布式版本控制系统,由Linux之父Linus Torvalds于2005年开发。它被设计用来跟踪源代码在软件开发过程中的变化,但它也可以用于跟踪任何文件集合的变化。
什么是版本控制?
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本的系统。使用版本控制系统可以将特定文件回溯到之前的状态,甚至将整个项目回退到过去某个时间点的状态,比较文件的变化细节,查看最后是谁修改了哪个地方,从而找出导致问题出现的原因,以及追溯代码的编写者等等。
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用户,运行下载的安装程序并按照安装向导的指示操作。大多数默认选项都可以直接使用。
验证安装
安装完成后,打开命令行界面(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仓库所需的所有文件。
添加文件
创建一些文件或修改现有文件后,使用以下命令将它们添加到暂存区:
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中,文件主要有以下几种状态:
- 未跟踪(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 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