分布式管理工具,流程图:

(一)git工作流程图

从一般开发者的角度来看,使用Git的工作流程是:
- 克隆远程库:从远程库上克隆完整的Git仓库(包括代码和版本信息)到本地;
- 在本地库上修改代码:在本地库上根据不同的开发目的,创建分支,修改代码;
- 提交到分支:在本地分支上提交代码;
- 把修改合并到本地主分支:在本地库上提交更新,也就是说,把修改合并到本地主分支;
- 把远程库合并到本地主分支:把远程库上的最新代码fetch下来,跟本地主分支合并,如果存在冲突,那么解决冲突。
- 把本地主分支提交到远程库:生成补丁(patch),把补丁发送给远程库。
(二)git常用命令

添加文件和修改提交文件
一、核心场景说明
Git 中「添加文件」和「修改提交文件」是最基础的版本控制操作,核心分为 新文件提交 和 已追踪文件修改后提交 两类场景,以下是全流程实操步骤和对应代码。
二、前置准备
-
初始化:
bash# 场景1:本地新建仓库(首次使用) mkdir git-demo && cd git-demo # 创建并进入仓库目录 git init # 初始化Git仓库(生成.git隐藏目录) # 场景2:克隆远程仓库(已有仓库) git clone https://gitee.com/xxx/git-demo.git # 替换为实际远程地址 cd git-demo # 进入克隆后的仓库目录 -
配置用户信息(首次使用 Git 必须配置):
bashgit config --global user.name "你的用户名" git config --global user.email "你的邮箱@xxx.com"
三、场景 1:提交新文件(从未被 Git 追踪的文件)
步骤 1:创建新文件(实操示例)
bash
# 创建空的readme.txt文件(Windows需在Git Bash执行,Linux/Mac直接执行)
touch readme.txt
# (可选)向readme.txt写入内容(避免文件为空,方便后续验证)
echo "Git文件提交流程:工作区 → 暂存区 → 版本库" > readme.txt
步骤 2:git status 查看文件状态(确认未被追踪)
bash
git status # 查看工作区状态
# 输出结果(关键信息):
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
# README.md
# test.py
# 说明:Untracked表示文件未被Git追踪,需先add到暂存区
步骤 3:git add将文件添加到暂存区
bash
# 方式1:添加单个文件(推荐,精准控制)
git add README.md # 添加README.md到暂存区
git add test.py # 添加test.py到暂存区
# 方式2:添加当前目录下所有未追踪/修改的文件(批量操作)
git add . # 注意:. 代表当前目录,会添加所有变更(新文件+修改文件)
# 方式3:添加指定类型文件(如所有.py文件)
git add *.py
# 方式4:添加目录(含子目录所有文件)
git add src/ # 添加src目录下所有文件
步骤 4:确认暂存区状态
bash
git status
# 输出结果(关键信息):
# Changes to be committed:
# (use "git restore --staged <file>..." to unstage)
# new file: README.md
# new file: test.py
# 说明:new file表示文件已进入暂存区,等待提交到版本库
步骤 5:将暂存区文件提交到版本库(git commit)
bash
# 方式1:基础提交(必须写提交说明,否则报错)
git commit -m "feat: 新增README.md和test.py文件" # -m后为提交备注,简洁描述变更
# 方式2:提交时补充详细说明(多行备注)
git commit # 不加-m会打开默认编辑器(如Vim),可写多行提交说明
# Vim编辑器操作:
# 1. 输入第一行:feat: 新增README.md和test.py文件(标题)
# 2. 空一行,输入详细说明:如"README记录Git提交流程,test.py为测试文件"
# 3. 按Esc,输入:wq保存并退出
# 方式3:跳过暂存区,直接提交已追踪文件(仅适用于已追踪文件,新文件无效)
# 注意:新文件必须先add,此命令仅针对已追踪文件的修改
git commit -am "feat: 新增xxx" # -a = --all,自动add已追踪的修改文件
步骤 6:验证提交结果
bash
git log # 查看提交日志
# 输出结果(关键信息):
# commit 8f9e7d6543210abcdef1234567890abcdef12345 (HEAD -> master)
# Author: 你的用户名 <你的邮箱@xxx.com>
# Date: Wed Dec 18 10:00:00 2024 +0800
#
# feat: 新增README.md和test.py文件
git status # 再次查看状态
# 输出:nothing to commit, working tree clean(工作区干净,无未提交变更)
四、场景 2:修改已被 Git 追踪的文件(文件已提交过,后续修改)
步骤 1:修改已追踪的文件(实操示例)
bash
# 方式1:命令行修改文件内容
echo "## 1. 添加文件流程" >> README.md # 向README.md追加内容
# 方式2:手动修改文件
# 打开test.py,修改内容为:
# print("Git文件提交测试")
# print("修改后新增行")
步骤 2:查看修改状态
bash
git status
# 输出结果(关键信息):
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git restore <file>..." to discard changes in working directory)
# modified: README.md
# modified: test.py
# 说明:modified表示文件已被追踪,且内容有修改,但未添加到暂存区
步骤 3:可选:查看文件具体修改内容(git diff)
bash
# 查看单个文件的修改差异
git diff README.md
# 输出结果(关键信息):
# diff --git a/README.md b/README.md
# index e69de29..a263d70 100644
# --- a/README.md
# +++ b/README.md
# @@ -0,0 +1,2 @@
# +# Git文件提交示例
# +## 1. 添加文件流程
# 说明:+表示新增行,-表示删除行(此处无删除)
# 查看所有修改文件的差异
git diff
步骤 4:将修改后的文件添加到暂存区
bash
# 方式1:单个文件添加
git add README.md
# 方式2:批量添加所有修改文件
git add .
# 方式3:仅添加文件的部分修改(精准提交,进阶用法)
git add -p test.py # 交互式选择要提交的修改块
# 交互选项说明:
# y: 确认提交该块 | n: 跳过该块 | s: 拆分块 | q: 退出 | a: 提交所有块
步骤 5:提交修改到版本库
bash
# 基础提交(推荐)
git commit -m "fix: 修改README.md补充添加文件流程,更新test.py内容"
# 进阶:修改最后一次提交(若提交后发现漏改/备注写错)
# 场景:刚提交完,想补充修改内容或修正提交备注
git add 漏加的文件.txt # 先添加漏改的文件
git commit --amend -m "修正后的提交备注"
# 注意:--amend会覆盖最后一次提交记录,已推送到远程的提交禁止使用!
五、场景 3:撤销操作(实操中常见错误修正)
1. 撤销工作区的修改(文件未 add)
bash
# 场景:修改了文件,但还没git add,想恢复到上一次提交的状态
git restore 文件名 # Git 2.23+版本(推荐)
# 或旧版本命令:
git checkout -- 文件名
# 示例:撤销test.py的修改
git restore test.py
2. 撤销暂存区的文件(已 add,未 commit)
bash
# 场景:文件已git add到暂存区,想撤回到工作区
git restore --staged 文件名 # Git 2.23+版本
# 或旧版本命令:
git reset HEAD 文件名
# 示例:撤销README.md的暂存状态
git restore --staged README.md
# 撤销后,文件回到「未追踪/已修改未add」状态,可重新操作
3. 撤销已提交的修改(已 commit,未 push)
bash
# 场景:提交后发现错误,想回退到上一个版本(保留修改)
git reset --soft HEAD^ # 回退版本,修改保留在暂存区
# 或(彻底放弃修改,谨慎使用)
git reset --hard HEAD^ # 回退版本,工作区/暂存区修改全部清空
# 说明:HEAD^ 代表上一个版本,HEAD~2 代表上两个版本,以此类推
六、完整实操流程总结(命令速查)
bash
# 1. 初始化仓库
mkdir git-demo && cd git-demo
git init
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
# 2. 创建并添加新文件
touch README.md test.py
git add README.md test.py
# 3. 首次提交
git commit -m "feat: 新增README和test.py基础文件"
# 4. 修改文件并提交
echo "## Git提交步骤" >> README.md
git add README.md
git commit -m "docs: 补充README的提交步骤说明"
# 5. 查看提交记录
git log --pretty=oneline # 简洁查看提交历史
(三)Git 版本回退与撤销
1.查看日志记录
现在我已经对readme.txt文件做了三次修改了,那么我现在想查看下历史记录,如何查呢?我们现在可以使用命令 git log 演示如下所演示

git log命令显示从最近到最远的显示日志,我们可以看到最近三次提交
如果嫌上面显示的信息太多的话,我们可以使用命令 git log pretty=oneline 演示如下:

2.Git 版本回退与撤销
常用撤销 / 回退命令速查表
| 操作场景 | 推荐命令 |
|---|---|
| 撤销工作区修改 | git restore 文件名 |
| 撤销暂存区修改 | git restore --staged 文件名 |
| 回退版本(保留暂存区) | git reset --soft 版本号/HEAD^ |
| 回退版本(保留工作区) | git reset 版本号/HEAD^ |
| 强制回退版本(清空修改) | git reset --hard 版本号/HEAD^ |
| 找回 hard 回退的版本 | git reflog → git reset --hard 版本号 |
| 修正最后一次 commit | git commit --amend -m "新备注" |
| 安全撤销远程提交 | git revert 版本号 → git push |
3.删除文件
git rm test.txt

删除的文件直接进入暂存区(如果使用rm删除不在暂存区,需要git add才会进入暂存区。如果进入暂存区可以退回工作区,使用下面命令 git reset HEAD test.txt,提交之后文件被删除。)

4.总结
bash
########################################################################
# 仓库初始化
########################################################################
# 创建目录(git_test01)并在目录下打开gitbash
# (手动操作:在文件资源管理器中创建文件夹,右键选择"Git Bash Here")
# 初始化git仓库
git init
########################################################################
# 创建文件并提交
########################################################################
# 目录下创建文件 file01.txt
# (手动操作:在Git Bash中执行 touch file01.txt,或右键新建文本文档)
# 将修改加入暂存区
git add .
# 将修改提交到本地仓库,提交记录内容为:commit 001
git commit -m 'commit 001'
# 查看日志
git log
########################################################################
# 修改文件并提交
########################################################################
# 修改file01的内容为:count=1
# (手动操作:打开file01.txt,输入内容"count=1"并保存)
# 将修改加入暂存区
git add .
# 将修改提交到本地仓库,提交记录内容为:update file01
git commit -m 'update file01'
# 查看日志
git log
# 以精简的方式显示提交记录
git log --pretty=oneline # 注:原文档中的"git-log"是简写,实际命令是"git log --pretty=oneline"
########################################################################
# 将最后一次修改还原
########################################################################
# 查看提交记录
git log --pretty=oneline
# 找到倒数第2次提交的commitID
# (执行git log后,复制"commit 001"对应的版本号,例如:abc123)
# 版本回退
git reset [倒数第2次的commitID] --hard