Git 基本操作
- 默认模式
- 浅蓝色模式
- 淡绿色模式
- 深夜模式
Git 基本操作
Git 的核心功能是记录和管理项目文件的变更历史。它通过创建和存储项目在不同时间点的快照(commit)来实现版本控制,并允许开发者随时比较不同版本之间的差异。
本章将详细介绍用于创建项目快照和提交变更的基本 Git 命令,帮助您掌握版本控制的基础操作。
Git 常用的6个命令:git clone
、git push
、git add
、git commit
、git checkout
、git pull
,后面我们会详细介绍。
解释说明:
✅ workspace:工作区
✅ staging area:暂存区/缓存区
✅ local repository:版本库或本地仓库
✅ remote repository:远程仓库
一个简单的操作步骤:
$ git init # 初始化仓库
$ git add . # 添加文件到暂存区
$ git commit # 将暂存区内容添加到仓库中
创建仓库命令
下表列出了 git 创建仓库的命令:
提交与修改
Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。
下表列出了有关创建与提交你的项目的快照的命令:
命令 | 说明 |
---|---|
git add | 添加文件到暂存区 |
git status | 查看仓库当前的状态,显示有变更的文件。 |
git diff | 比较文件的不同,即暂存区和工作区的差异。 |
git difftool | 使用外部差异工具查看和比较文件的更改。 |
git range-diff | 比较两个提交范围之间的差异。 |
git commit | 提交暂存区到本地仓库。 |
git reset | 回退版本。 |
git rm | 将文件从暂存区和工作区中删除。 |
git mv | 移动或重命名工作区文件。 |
git notes | 添加注释。 |
git checkout | 分支切换。 |
git switch(Git 2.23 版本引入) | 更清晰地切换分支。 |
git restore(Git 2.23 版本引入) | 恢复或撤销文件的更改。 |
git show | 显示 Git 对象的详细信息。 |
下表列出了有关提交日志的命令:
命令 | 说明 |
---|---|
git log | 查看历史提交记录 |
git blame <file> | 以列表形式查看指定文件的历史修改记录 |
git shortlog | 生成简洁地提交日志摘要 |
git describe | 生成一个可读的字符串,该字符串基于 Git 的标签系统来描述当前的提交 |
下表列出了有关远程操作的命令:
命令 | 说明 |
---|---|
git remote | 远程仓库操作 |
git fetch | 从远程获取代码库 |
git pull | 下载远程代码并合并 |
git push | 上传远程代码并合并 |
git submodule | 管理包含其他 Git 仓库的项目 |
Git 文件状态
Git 采用三态文件管理机制,文件在版本控制过程中会处于工作目录、暂存区和本地仓库三种状态之一。
工作目录(Working Directory)
工作目录是本地计算机上看到的项目文件,也是你直接操作文件的地方。在这里,你可以查看、编辑、删除或创建文件,所有的文件修改都会首先在工作目录中进行。
在工作目录中的文件可能有以下几种状态:
- 未跟踪(Untracked):新创建的文件,未被 Git 记录。
- 已修改(Modified):已被 Git 跟踪的文件发生了更改,但这些更改还没有被提交到 Git 记录中。
暂存区(Staging Area)
暂存区(又称索引,Index)是一个临时存储区域,用于存放准备提交到本地仓库的更改。你可以从工作目录中选择性地添加文件变更到暂存区,从而灵活控制每次提交的内容——这样既能一次性提交多个文件的修改,又不必强制提交所有变更。
- 使用
git add <filename>
命令将文件从工作目录添加到暂存区。 - 使用
git add .
命令将当前目录下的所有更改添加到暂存区。
git add <filename> # 添加指定文件到暂存区
git add . # 添加所有更改到暂存区
本地仓库(Local Repository)
本地仓库是一个隐藏在.git
目录中的数据库,用于存储项目的所有提交历史记录。当你执行提交操作时,Git 会将暂存区中的变更内容永久保存到本地仓库,形成一个新的版本记录。
使用git commit -m "commit message"
命令将暂存区中的更改提交到本地仓库。
git commit -m "commit message" # 提交暂存区的更改到本地仓库
文件状态的转换流程
未跟踪(Untracked):新创建的文件最初是未跟踪的。它们存在于工作目录中,但没有被 Git 跟踪。
touch newfile.txt # 创建一个新文件
git status # 查看状态,显示 newfile.txt 未跟踪
已跟踪(Tracked):通过git add
命令将未跟踪的文件添加到暂存区后,文件变为已跟踪状态。
git add newfile.txt # 添加文件到暂存区
git status # 查看状态,显示 newfile.txt 在暂存区
已修改(Modified):对已跟踪的文件进行更改后,这些更改会显示为已修改状态,但这些更改还未添加到暂存区。
echo "Hello, World!" > newfile.txt # 修改文件
git status # 查看状态,显示 newfile.txt 已修改
已暂存(Staged):使用git add
命令将修改过的文件添加到暂存区后,文件进入已暂存状态,等待提交。
git add newfile.txt # 添加文件到暂存区
git status # 查看状态,显示 newfile.txt 已暂存
已提交(Committed):使用git commit
命令将暂存区的更改提交到本地仓库,这些操作被记录下来,文件状态返回为已跟踪状态。
git commit -m "Added newfile.txt" # 提交更改
git status # 查看状态,工作目录干净
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈