Git 基本操作
本章将介绍 Git 的基本操作命令,这些是日常使用 Git 时最频繁用到的命令。掌握这些基本操作是使用 Git 的基础。
文件状态管理
查看仓库状态
bash
# 查看当前仓库状态
git status
# 查看简洁状态
git status -s
# 或
git status --short状态输出说明:
M modified_file.txt # 已修改并暂存
M modified_file2.txt # 已修改但未暂存
A new_file.txt # 新文件已暂存
D deleted_file.txt # 已删除并暂存
R renamed_file.txt # 已重命名
C copied_file.txt # 已复制
U unmerged_file.txt # 未合并(冲突)
?? untracked_file.txt # 未跟踪文件
!! ignored_file.txt # 被忽略文件添加文件到暂存区
bash
# 添加单个文件
git add filename.txt
# 添加多个文件
git add file1.txt file2.txt file3.txt
# 添加当前目录所有文件
git add .
# 添加所有已跟踪文件的修改
git add -u
# 添加所有文件(包括新文件和修改)
git add -A
# 交互式添加
git add -i
# 部分添加(逐块选择)
git add -p filename.txt实际操作示例
bash
# 创建演示项目
mkdir git-basic-ops
cd git-basic-ops
git init
# 创建一些文件
echo "主程序文件" > main.py
echo "配置文件" > config.json
echo "说明文档" > README.md
mkdir utils
echo "工具函数" > utils/helpers.py
# 查看状态
git status
# 添加文件
git add main.py config.json
git status
# 添加目录
git add utils/
git status
# 添加剩余文件
git add README.md
git status提交操作
基本提交
bash
# 提交暂存区的内容
git commit -m "提交信息"
# 提交并添加所有已跟踪文件的修改
git commit -am "提交信息"
# 空提交(用于触发 CI/CD)
git commit --allow-empty -m "触发构建"提交信息最佳实践
bash
# ✅ 好的提交信息
git commit -m "feat: 添加用户登录功能"
git commit -m "fix: 修复密码验证错误"
git commit -m "docs: 更新 API 文档"
git commit -m "style: 修复代码格式问题"
git commit -m "refactor: 重构用户服务模块"
# ❌ 不好的提交信息
git commit -m "修改"
git commit -m "更新"
git commit -m "bug fix"修改提交
bash
# 修改最后一次提交的信息
git commit --amend -m "新的提交信息"
# 修改最后一次提交的内容(添加遗漏的文件)
git add forgotten_file.txt
git commit --amend --no-edit
# 交互式修改提交信息
git commit --amend提交操作示例
bash
# 继续上面的示例
git commit -m "初始提交:添加项目基本文件"
# 修改文件
echo "更新的主程序" >> main.py
echo "新的工具函数" >> utils/helpers.py
# 查看修改
git status
git diff
# 提交修改
git add main.py utils/helpers.py
git commit -m "feat: 更新主程序和工具函数"
# 发现遗漏了配置文件的修改
echo "新配置项" >> config.json
git add config.json
git commit --amend --no-edit查看修改
查看工作区修改
bash
# 查看工作区与暂存区的差异
git diff
# 查看特定文件的修改
git diff filename.txt
# 查看暂存区与最后提交的差异
git diff --staged
# 或
git diff --cached
# 查看工作区与最后提交的差异
git diff HEAD
# 查看两个提交之间的差异
git diff commit1 commit2
# 查看特定文件在两个提交间的差异
git diff commit1 commit2 -- filename.txt差异输出解读
diff
diff --git a/main.py b/main.py
index 1234567..abcdefg 100644
--- a/main.py
+++ b/main.py
@@ -1,3 +1,4 @@
def main():
print("Hello, World!")
+ print("新增的功能")
return 0解释:
---表示旧文件+++表示新文件@@ -1,3 +1,4 @@表示修改的行号范围-表示删除的行+表示添加的行
查看修改示例
bash
# 修改文件进行演示
echo "# 项目说明" > README.md
echo "这是一个演示项目" >> README.md
# 查看修改
git diff README.md
# 添加到暂存区
git add README.md
# 查看暂存区的修改
git diff --staged
# 继续修改文件
echo "## 安装说明" >> README.md
# 现在可以看到工作区和暂存区的差异
git diff README.md查看历史
基本历史查看
bash
# 查看提交历史
git log
# 简洁格式
git log --oneline
# 图形化显示分支
git log --graph
# 显示统计信息
git log --stat
# 显示详细修改
git log -p
# 限制显示数量
git log -n 5
git log --oneline -10高级历史查看
bash
# 美化的日志显示
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
# 查看特定文件的历史
git log -- filename.txt
# 查看特定作者的提交
git log --author="张三"
# 查看特定时间范围的提交
git log --since="2024-01-01" --until="2024-01-31"
# 查看包含特定关键词的提交
git log --grep="bug fix"
# 查看修改了特定内容的提交
git log -S "function_name"查看特定提交
bash
# 查看特定提交的详细信息
git show commit_hash
# 查看特定提交的文件列表
git show --name-only commit_hash
# 查看特定提交的统计信息
git show --stat commit_hash历史查看示例
bash
# 创建更多提交来演示
echo "功能模块A" > moduleA.py
git add moduleA.py
git commit -m "feat: 添加模块A"
echo "功能模块B" > moduleB.py
git add moduleB.py
git commit -m "feat: 添加模块B"
echo "修复模块A的bug" >> moduleA.py
git add moduleA.py
git commit -m "fix: 修复模块A的错误"
# 查看历史
git log --oneline
# 查看图形化历史
git log --graph --oneline
# 查看特定文件的历史
git log --oneline -- moduleA.py撤销操作
撤销工作区修改
bash
# 撤销单个文件的修改
git restore filename.txt
# 或使用旧语法
git checkout -- filename.txt
# 撤销所有文件的修改
git restore .
# 恢复文件到特定版本
git restore --source=HEAD~1 filename.txt撤销暂存区修改
bash
# 从暂存区移除文件(保留工作区修改)
git restore --staged filename.txt
# 或使用旧语法
git reset HEAD filename.txt
# 移除所有暂存的修改
git restore --staged .撤销提交
bash
# 撤销最后一次提交(保留修改在工作区)
git reset --soft HEAD~1
# 撤销最后一次提交(保留修改在暂存区)
git reset --mixed HEAD~1
# 或简写
git reset HEAD~1
# 撤销最后一次提交(完全删除修改)⚠️ 危险操作
git reset --hard HEAD~1
# 创建新提交来撤销指定提交
git revert commit_hash撤销操作示例
bash
# 创建一些修改来演示撤销
echo "错误的修改" >> main.py
echo "临时文件" > temp.txt
# 查看状态
git status
# 撤销工作区修改
git restore main.py
# 添加文件到暂存区
git add temp.txt
# 从暂存区移除
git restore --staged temp.txt
# 创建一个错误的提交
git add temp.txt
git commit -m "错误的提交"
# 撤销提交(保留修改)
git reset --soft HEAD~1
git status
# 完全撤销提交
git reset --hard HEAD~1文件操作
重命名和移动文件
bash
# 重命名文件
git mv old_name.txt new_name.txt
# 移动文件到目录
git mv file.txt directory/
# 等价的手动操作
mv old_name.txt new_name.txt
git add new_name.txt
git rm old_name.txt删除文件
bash
# 删除文件并从 Git 中移除
git rm filename.txt
# 只从 Git 中移除,保留本地文件
git rm --cached filename.txt
# 删除目录
git rm -r directory/
# 强制删除(即使文件已修改)
git rm -f filename.txt忽略文件
bash
# 创建 .gitignore 文件
cat > .gitignore << EOF
# 临时文件
*.tmp
*.log
# 编译输出
*.o
*.exe
# 依赖目录
node_modules/
venv/
# 编辑器配置
.vscode/
.idea/
# 系统文件
.DS_Store
Thumbs.db
EOF
# 添加 .gitignore 到版本控制
git add .gitignore
git commit -m "添加 .gitignore 文件"文件操作示例
bash
# 重命名文件
git mv main.py app.py
git status
git commit -m "重命名 main.py 为 app.py"
# 移动文件到目录
mkdir src
git mv app.py src/
git status
git commit -m "移动 app.py 到 src 目录"
# 删除不需要的文件
git rm temp.txt
git commit -m "删除临时文件"远程操作基础
查看远程仓库
bash
# 查看远程仓库
git remote
# 查看远程仓库详细信息
git remote -v
# 查看特定远程仓库信息
git remote show origin推送和拉取
bash
# 推送到远程仓库
git push origin main
# 首次推送并设置上游分支
git push -u origin main
# 拉取远程更新
git pull origin main
# 获取远程更新但不合并
git fetch origin常用操作组合
日常工作流程
bash
# 1. 查看当前状态
git status
# 2. 拉取最新代码
git pull
# 3. 创建/修改文件
echo "新功能" > feature.py
# 4. 查看修改
git diff
# 5. 添加修改
git add feature.py
# 6. 提交修改
git commit -m "feat: 添加新功能"
# 7. 推送到远程
git push快速修复流程
bash
# 1. 发现问题,快速修复
echo "修复的代码" >> buggy_file.py
# 2. 快速提交
git commit -am "fix: 修复紧急问题"
# 3. 立即推送
git push实用技巧
别名设置
bash
# 设置常用别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual '!gitk'
# 使用别名
git st # 等于 git status
git ci -m "msg" # 等于 git commit -m "msg"快捷操作
bash
# 查看最后一次提交
git show
# 查看最后 n 次提交的简要信息
git log --oneline -5
# 搜索提交历史
git log --grep="关键词"
# 查看谁修改了特定行
git blame filename.txt
# 查看文件的修改历史
git log -p -- filename.txt常见问题解决
问题1:提交信息写错了
bash
# 修改最后一次提交信息
git commit --amend -m "正确的提交信息"问题2:添加了错误的文件
bash
# 从暂存区移除
git restore --staged wrong_file.txt
# 如果已经提交,撤销提交
git reset --soft HEAD~1问题3:工作区文件被意外修改
bash
# 恢复单个文件
git restore filename.txt
# 恢复所有文件
git restore .问题4:想要查看某个提交的具体内容
bash
# 查看提交详情
git show commit_hash
# 查看提交中的特定文件
git show commit_hash:path/to/file总结
Git 基本操作的核心命令:
状态和查看
bash
git status # 查看状态
git diff # 查看修改
git log # 查看历史
git show # 查看提交详情文件管理
bash
git add # 添加到暂存区
git commit # 提交修改
git rm # 删除文件
git mv # 重命名/移动文件撤销操作
bash
git restore # 恢复文件
git reset # 重置提交
git revert # 反向提交远程操作
bash
git push # 推送更新
git pull # 拉取更新
git fetch # 获取更新掌握这些基本操作后,你就能够:
- ✅ 有效管理文件版本
- ✅ 查看和理解项目历史
- ✅ 安全地撤销错误操作
- ✅ 与远程仓库同步
在下一章中,我们将学习 Git 的分支管理,这是 Git 最强大的功能之一。