Git 基本操作

Git 基本操作教程

掌握Git核心命令和工作流程,高效管理代码版本

Git 工作区概念

理解Git的三个主要工作区域是掌握Git操作的基础:

工作目录

实际文件所在目录

暂存区

准备提交的更改

Git仓库

保存项目元数据和对象数据库

未跟踪文件

新创建的文件,Git尚未开始跟踪

已修改文件

已跟踪文件的内容发生了变化

已暂存文件

修改已添加到暂存区,准备提交

已提交文件

文件已安全保存在本地数据库中

基本工作流程

Git的基本工作流程包括修改文件、暂存更改和提交更改三个步骤:

修改文件

在工作目录中修改文件

暂存更改

git add

提交更改

git commit

推送到远程

git push

更新本地

git pull

1

检查仓库状态

使用git status查看工作目录和暂存区的状态:

git status

这个命令会显示哪些文件已被修改、哪些文件已暂存,以及哪些文件未被跟踪。

2

添加文件到暂存区

使用git add将文件添加到暂存区:

# 添加特定文件
git add filename.txt

# 添加所有修改和新增文件
git add .

# 交互式添加文件
git add -p
3

提交更改

使用git commit将暂存区的更改提交到仓库:

# 提交并添加提交信息
git commit -m "描述提交内容"

# 添加所有已跟踪文件的修改并提交
git commit -a -m "描述提交内容"

# 修改上一次提交
git commit --amend

最佳实践: 提交信息应该清晰、简洁,说明本次提交的目的和内容变化。

查看提交历史

Git提供了多种查看项目历史记录的方式:

基本日志

查看提交历史:

git log

简洁日志

单行显示提交历史:

git log --oneline

图形化日志

显示分支和合并历史:

git log --graph --oneline

过滤日志

按作者、时间等过滤:

# 按作者过滤
git log --author="用户名"

# 按时间过滤
git log --since="2023-01-01"

查看特定提交

使用git show查看特定提交的详细信息:

# 查看最新提交
git show

# 查看特定提交
git show commit_hash

# 查看特定文件的更改历史
git log -p filename

分支操作

分支是Git最强大的功能之一,允许你在独立的开发线上工作。

main
feature

查看分支

列出所有分支:

# 列出本地分支
git branch

# 列出所有分支(包括远程)
git branch -a

创建分支

创建新分支:

# 创建分支
git branch branch_name

# 创建并切换到新分支
git checkout -b branch_name

切换分支

在不同分支间切换:

# 切换分支
git checkout branch_name

# 切换分支(新版本Git)
git switch branch_name

合并分支

将分支合并到当前分支:

# 合并分支
git merge branch_name

# 取消合并(合并冲突时)
git merge --abort

删除分支

删除已合并的分支:

# 删除本地分支
git branch -d branch_name

# 强制删除分支
git branch -D branch_name

变基操作

将当前分支变基到目标分支:

# 变基操作
git rebase target_branch

# 交互式变基
git rebase -i target_branch

注意: 变基会重写提交历史,在共享分支上使用时要特别小心。

远程仓库操作

与远程仓库协作是团队开发的关键部分。

查看远程仓库

查看已配置的远程仓库:

# 查看远程仓库
git remote -v

# 查看远程仓库详细信息
git remote show origin

添加远程仓库

添加新的远程仓库:

# 添加远程仓库
git remote add origin https://github.com/user/repo.git

# 修改远程仓库URL
git remote set-url origin new_url

获取远程更新

从远程仓库获取更新:

# 获取远程更新但不合并
git fetch origin

# 获取并合并远程更新
git pull origin main

# 获取所有远程仓库的更新
git fetch --all

推送到远程

将本地提交推送到远程仓库:

# 推送到远程仓库
git push origin main

# 推送并设置上游分支
git push -u origin branch_name

# 强制推送(谨慎使用)
git push -f origin main

撤销操作

Git提供了多种撤销更改的方法。

撤销工作区更改

撤销工作目录中的更改:

# 撤销特定文件的修改
git checkout -- filename

# 撤销所有修改
git checkout -- .

# 恢复特定提交的文件版本
git checkout commit_hash -- filename

撤销暂存区更改

将文件从暂存区移回工作区:

# 从暂存区移除特定文件
git reset HEAD filename

# 从暂存区移除所有文件
git reset HEAD

撤销提交

撤销已提交的更改:

# 撤销最新提交,保留更改在工作区
git reset --soft HEAD~1

# 撤销最新提交,删除更改
git reset --hard HEAD~1

# 回退到特定提交
git reset --hard commit_hash

恢复删除的分支

恢复误删的分支:

# 查找已删除分支的提交哈希
git reflog

# 恢复分支
git checkout -b branch_name commit_hash

警告: git reset --hard会永久删除未提交的更改,使用前请确保已备份重要更改。

标签操作

标签用于标记重要的提交点,通常用于版本发布。

创建标签

创建新的标签:

# 创建轻量标签
git tag v1.0.0

# 创建附注标签
git tag -a v1.0.0 -m "版本1.0.0发布"

# 为特定提交创建标签
git tag -a v1.0.0 commit_hash -m "标签消息"

查看标签

列出所有标签:

# 列出所有标签
git tag

# 查看标签详细信息
git show v1.0.0

推送标签

将标签推送到远程仓库:

# 推送特定标签
git push origin v1.0.0

# 推送所有标签
git push origin --tags

删除标签

删除本地和远程标签:

# 删除本地标签
git tag -d v1.0.0

# 删除远程标签
git push origin --delete v1.0.0

常用工作流示例

日常开发工作流

# 开始新的一天,获取最新代码
git pull origin main

# 创建功能分支
git checkout -b feature/new-feature

# 进行开发并提交更改
git add .
git commit -m "实现新功能"

# 推送功能分支到远程
git push -u origin feature/new-feature

# 创建Pull Request进行代码审查
# ... 在GitHub/GitLab上操作 ...

# 合并后,切换回主分支并更新
git checkout main
git pull origin main

# 删除本地功能分支
git branch -d feature/new-feature

修复紧急bug工作流

# 从主分支创建热修复分支
git checkout -b hotfix/critical-bug main

# 修复bug并提交
git add .
git commit -m "修复严重bug"

# 切换到主分支并合并修复
git checkout main
git merge hotfix/critical-bug

# 推送到远程
git push origin main

# 删除热修复分支
git branch -d hotfix/critical-bug

快速参考表

基本命令

  • git init - 初始化新仓库
  • git clone - 克隆现有仓库
  • git status - 查看仓库状态
  • git add - 添加文件到暂存区
  • git commit - 提交更改
  • git push - 推送到远程
  • git pull - 从远程拉取更新

分支命令

  • git branch - 列出分支
  • git branch name - 创建分支
  • git checkout name - 切换分支
  • git merge name - 合并分支
  • git branch -d name - 删除分支
  • git rebase - 变基分支

历史与撤销

  • git log - 查看提交历史
  • git diff - 查看更改
  • git checkout -- file - 撤销工作区更改
  • git reset HEAD file - 撤销暂存区更改
  • git reset --hard - 撤销提交
  • git revert - 创建撤销提交

远程命令

  • git remote -v - 查看远程
  • git remote add - 添加远程
  • git fetch - 获取远程更新
  • git pull - 拉取并合并
  • git push - 推送到远程
  • git push -u - 推送并设置上游