Git基础使用教程

一、Git简介

1.1 什么是Git

Git是一个开源的分布式版本控制系统,主要用于管理项目文件的修改历史。在软件开发过程中,开发人员可以使用Git记录代码的不同版本,查看文件的修改情况,并在需要时恢复到之前的版本。

例如,在开发一个项目时,我们可能会不断修改代码。如果某次修改导致程序出现问题,仅依靠手动备份很难准确找到之前的版本。使用Git后,每次完成一项工作都可以创建一次提交,记录当前的修改内容,方便后续查看和管理。

Git除了可以用于个人开发,也支持多人协同开发。团队成员可以分别进行开发,再将各自完成的代码合并到项目中。

Git是目前世界上最先进的分布式版本控制系统。

1.2 Git与GitHub、Gitee的区别

初次接触Git时,经常会看到GitHub、Gitee等名称。它们之间的关系如下。

名称 说明
Git 分布式版本控制工具,负责管理代码版本
GitHub 基于Git的代码托管与协作平台,全球规模最大的软件源代码托管与协作开发平台
Gitee 中国版github

Git可以独立运行,不依赖GitHub或Gitee。开发人员可以在本地使用Git管理项目,之后再将代码上传到远程仓库。

在团队开发中,通常由Git负责版本管理,由GitHub、Gitee等平台负责远程代码托管和协作。

1.3 Git的基本工作原理

Git 的日常操作主要涉及工作区、暂存区、本地仓库和远程仓库。

  • 工作区(Working Directory):存放项目文件的目录,开发人员平时编写和修改代码的地方。
  • 暂存区(Staging Area):用于记录下一次提交准备包含的修改。
  • 本地仓库(Local Repository):保存已经提交的版本历史。
  • 远程仓库(Remote Repository):存放在远程服务器上的仓库,供团队成员共享代码。

它们之间的基本关系如下:

当需要获取其他成员的最新代码时,可以使用git pull将远程更新获取并整合到当前分支。

需要注意,git add、git commit和git push是三个不同的操作,分别对应暂存修改、创建本地提交和推送提交到远程仓库,下面会有详细解释。

二、Git的安装与配置

2.1 Windows系统安装

Git 官方下载地址:

https://git-scm.com/downloads

进入下载页面后,选择Windows对应的安装程序。下载完成后运行安装程序,一般使用默认选项即可完成安装。

安装完成后,可以在开始菜单中找到Git Bash,也可以在cmd中执行命令。

打开Git Bash,输入以下命令:

git --version

如果终端输出类似下面的内容,说明 Git 已经安装成功:

git version 2.x.x

实际显示的版本号可能不同。

2.2 配置用户名和邮箱

安装完成后,需要配置Git的提交者信息。

# 配置用户名
git config --global user.name "Your Name"

# 配置邮箱
git config --global user.email "your@example.com"

将示例中的用户名和邮箱替换为自己的信息即可,这里的用户名和邮箱用于标识提交记录中的提交者。

其中,--global表示配置对当前操作系统用户下的所有Git仓库生效。如果只想对当前项目进行配置,可以进入项目目录后执行:

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

查看当前配置:

git config --list

至此,Git的基本安装和配置就完成了。

三、Git的基础使用

本节以一个简单的项目为例,介绍如何使用 Git 创建仓库、提交修改和查看版本历史。

3.1 创建本地仓库

首先创建一个项目目录,并进入该目录:

mkdir git-demo
cd git-demo

在目录中创建一个README.md文件,写入一些项目说明。

接着执行:

git init

该命令会在当前目录初始化一个Git仓库,并创建用于保存仓库数据的.git目录。

可以使用以下命令查看当前仓库的状态:

git status

由于README.md尚未被Git跟踪,通常会显示为未跟踪文件。

3.2 将文件添加到暂存区

Git不会因为文件发生变化就自动创建提交,需要先将准备提交的修改添加到暂存区。

添加指定文件:

git add README.md

添加当前目录下符合规则的修改:

git add .

添加完成后,可以再次执行:

git status

此时,文件会显示为已经暂存、等待提交的状态。

如果想查看已经暂存的具体修改,可以执行:

git diff --staged

这有助于在提交之前检查代码,避免把不需要的修改一起提交。

3.3 提交修改

文件添加到暂存区后,可以执行git commit创建一次提交。

git commit -m "初始化项目"

其中,-m用于直接指定提交说明。

提交完成后,Git会将暂存区中的修改记录到本地仓库,形成一个新的版本记录。

在实际开发中,建议每次提交尽量围绕一项相对独立的工作。例如:

git commit -m "新增用户登录功能"
git commit -m "修复用户信息查询问题"
git commit -m "更新项目说明文档"

清晰的提交说明可以帮助开发人员快速了解每次修改的目的。

3.4 查看文件修改

Git提供了多个命令用于检查项目状态和修改内容。

# 查看当前仓库状态
git status

# 查看工作区中尚未暂存的修改
git diff

# 查看暂存区中的修改
git diff --staged

其中,git status是日常使用频率较高的命令。执行提交、切换分支或者处理冲突之前,都可以先通过它确认当前仓库的状态。

3.5 查看提交历史

查看完整的提交历史:

git log

如果只需要查看简洁的提交记录,可以使用:

git log --oneline

输出内容通常包括提交 ID 和提交说明。例如:

a1b2c3d 更新项目说明文档
e4f5g6h 修复用户信息查询问题
i7j8k9l 初始化项目

这里的提交ID仅用于演示。

如果需要查看某次提交具体修改了什么,可以执行:

git show 提交ID

通过这些命令,可以了解项目的修改历史,并在出现问题时定位相关提交。

3.6 配置.gitignore

项目中存在一些文件,通常不需要纳入版本管理,例如日志文件、编译产物和本地环境配置。

可以在项目根目录创建.gitignore文件,配置需要忽略的内容。

例如:

# 日志文件
*.log

# Python 缓存
__pycache__/
*.pyc

# Python 虚拟环境
.venv/

# 本地环境配置
.env

.gitignore主要用于忽略尚未被Git跟踪的文件。对于已经纳入版本管理的文件,新增忽略规则并不会自动停止跟踪。

另外,密码、访问令牌和私钥等敏感信息不应提交到代码仓库中。

同时,nodejs依赖,python的虚拟环境等均不应该提交到git。

3.7 常用命令汇总

命令 作用
git init 初始化本地仓库
git clone 仓库地址 克隆远程仓库
git status 查看仓库状态
git add 文件名 将指定文件的修改添加到暂存区
git add . 暂存当前目录下的修改
git commit -m "说明" 创建提交
git diff 查看未暂存的修改
git log --oneline 查看简洁提交历史
git restore 文件名 丢弃指定文件尚未暂存的修改
git restore --staged 文件名 将文件移出暂存区
git branch 查看本地分支
git switch 分支名 切换分支
git pull 获取并整合远程更新
git push 推送本地提交

其中,git restore 文件名会丢弃该文件尚未暂存的修改,使用前需要确认这些修改不再需要。

四、Git远程仓库的使用

实际开发中,项目通常需要托管到远程仓库,以便多人共享代码。下面介绍如何获取远程项目,以及如何将本地代码上传到远程仓库。

4.1 克隆远程仓库

如果团队已经创建了远程仓库,可以使用git clone将项目下载到本地。

git clone 仓库地址

例如:

git clone https://github.com/example/project.git

这里的地址仅为示例,需要替换为团队实际使用的仓库地址。

克隆完成后,进入项目目录:

cd project

通过克隆获取的项目通常已经配置好远程仓库信息,可以直接进行后续开发。

4.2 关联远程仓库

如果已经在本地创建了仓库,现在希望将它关联到一个新建的空远程仓库,可以执行:

git remote add origin 远程仓库地址

其中,origin是常用的远程仓库名称。

查看远程仓库配置:

git remote -v

如果本地项目尚未提交过代码,可以先完成第一次提交,再推送到远程仓库。

例如:

git add .
git commit -m "初始化项目"

git branch -M main
git push -u origin main

这里假设远程仓库为空,并且当前项目适合将main作为主分支。如果远程仓库已经存在提交,应先确认本地和远程的历史关系,不要直接照搬初始化流程。

4.3 获取远程更新

当其他成员已经向远程仓库推送了新的代码时,可以执行:

git pull

该命令会获取远程更新,并尝试将其整合到当前分支。如果出现冲突,需要进一步处理。

在多人开发中,建议开始工作前先同步最新代码,避免基于过时的版本进行开发。

4.4 推送本地代码

完成代码修改并创建本地提交后,可以使用:

git push

将本地提交推送到对应的远程分支。

如果是首次推送一个新分支,通常需要指定远程仓库和分支名称:

git push -u origin 分支名

执行成功后,远程仓库就可以看到该分支上的提交。

需要注意,只有已经提交到本地仓库的修改才能通过普通的git push推送到远程仓库。尚未提交的工作区修改不会自动上传。

五、Git多人协作开发

多人协作是Git在项目开发中的重要应用场景。团队成员需要在共享项目的基础上分别开发,再通过分支和合并操作将代码整合起来。

5.1 为什么需要分支

假设一个项目需要同时开发登录功能和用户信息管理功能。如果所有成员都直接在同一个主分支上修改代码,就容易出现代码相互影响、修改难以区分等问题。

Git 提供了分支机制,可以让不同成员在独立的分支上进行开发。

常见的分支命名方式如下:

分支名称 用途
main 主分支,保存经过验证的项目代码
feature/login 开发登录功能
feature/user 开发用户信息功能
fix/login-error 修复登录相关问题

具体的分支命名可以由团队自行约定。关键在于让不同任务的代码修改相对独立,便于管理和审查。

5.2 创建和切换分支

查看当前本地分支:

git branch

创建并切换到一个新分支:

git switch -c feature/login

如果分支已经存在,可以直接切换:

git switch main

在新分支中完成的提交不会自动进入main分支。只有在后续进行合并或其他整合操作时,这些修改才会进入目标分支。

5.3 推荐的团队开发流程

对于刚开始使用Git的团队,可以采用功能分支配合合并请求的方式进行开发。

假设团队已经有一个远程项目,主分支为main,某位成员需要开发登录功能,可以按照以下步骤进行。

第一步:同步主分支

git switch main
git pull --ff-only origin main

这里假设本地main已经与远程主分支保持对应关系,并且当前工作区没有需要另外处理的修改。

--ff-only表示只允许快进更新。如果本地分支与远程分支已经发生分叉,命令会停止,而不是自动创建合并提交。

第二步:创建功能分支

git switch -c feature/login

后续与登录功能相关的代码修改都在这个分支中完成。

第三步:修改并提交代码

完成一部分功能后,可以先检查修改内容:

git status
git diff

确认没有问题后,再进行提交:

git add .
git commit -m "feat: add login feature"

提交说明一般是:代码更改类型+详细变更,如feat: add sth.,feat代表新增,add sth就是对这个新增的说明,这个后续会单独说

第四步:推送功能分支

git push -u origin feature/login

推送成功后,远程仓库中就会出现feature/login分支。

第五步:创建合并请求

在Git平台上创建Pull Request或Merge Request,将feature/login合并到main。

团队成员可以检查代码修改、讨论实现方式,并在必要时要求补充测试。确认符合要求后,再完成合并。

第六步:同步合并后的代码

合并完成后,开发人员可以切换回主分支并获取最新代码:

git switch main
git pull --ff-only origin main

至此,一项功能从开发到合并的基本流程就完成了。

5.4 多人开发时需要注意的问题

在团队开发过程中,建议遵循以下约定:

  1. 开始新任务前,先同步主分支的最新代码。
  2. 不同功能尽量使用不同分支,避免所有人直接修改主分支。
  3. 每次提交尽量对应一项相对独立的工作。
  4. 推送代码前,检查修改内容,确保没有误提交临时文件或敏感信息。
  5. 合并前进行代码审查,必要时运行测试。
  6. 不随意使用强制推送或重置共享分支历史的命令。

这些约定能够减少代码冲突,也便于后续定位问题。

5.5 代码冲突的处理

当不同分支修改了同一文件中的相同部分时,Git 有时无法自动完成合并,就会产生代码冲突。

例如,两个分支分别将同一行代码修改为不同内容,合并时可能出现以下标记:

<<<<<<< HEAD
message = "Hello"
=======
message = "Welcome"
>>>>>>> feature/login

其中,<<<<<<<、=======和>>>>>>>用于标记发生冲突的不同内容。

处理冲突时,需要先理解双方修改的目的,再确定最终应该保留的代码。解决后删除冲突标记,并检查程序是否能够正常运行。

如果当前执行的是普通合并,可以使用以下命令标记冲突已经解决:

git add 冲突文件名
git status

随后根据Git的提示完成合并。如果冲突发生在变基过程中,则应按照变基流程继续处理。

需要注意,代码冲突不一定意味着某一方写错了代码。它通常只是说明Git无法自动判断如何整合两边的修改,最终仍然需要开发人员根据实际业务逻辑进行确认。

六、总结

Git的基础使用主要包括本地版本管理、远程仓库操作和分支协作三个部分。

对于初学者,首先需要掌握git init、git add、git commit、git status等基础命令,理解工作区、暂存区和本地仓库之间的关系。在此基础上,再学习远程仓库的克隆、拉取和推送,最后通过分支与合并请求参与多人协作。

在实际开发中,Git不仅用于保存代码,还承担着记录修改历史、隔离开发任务和整合团队成果的作用。熟悉这些基本操作后,就可以在日常项目中逐步形成规范的版本管理习惯。

点赞

分割线QAQ~~~~~~~~~~~~~~~~~~~~~~~

旧版评论(请先登录):


Warning: Undefined variable $fields in /www/wwwroot/www.itxcjm.top/wp-content/themes/kratos-pjax-master/comments.php on line 46

发表回复

电子邮件地址不会被公开。必填项已用 * 标注