前言

Git作为当今最流行的分布式版本控制系统,已经成为开发者必备的技能之一。无论你是独立开发者还是团队协作,掌握Git的基本操作都能极大提高工作效率。本文将详细介绍Git的常用命令,帮助你快速上手并精通Git的基本使用。

一、Git基础概念

在深入命令之前,我们先了解几个Git的核心概念:

  • 仓库(Repository):项目所在的目录,包含所有文件的历史记录
  • 工作区(Working Directory):你当前编辑的文件目录
  • 暂存区(Staging Area):准备提交的文件暂存区域
  • 提交(Commit):对文件更改的永久快照
  • 分支(Branch):独立开发线,默认有master/main分支
  • 远程仓库(Remote):托管在网络上的项目仓库

二、Git安装与配置

1. 安装Git

Windows: 下载Git for Windows (Git for Windows)
Mac: 使用Homebrew brew install git
Linux: sudo apt-get install git (Ubuntu/Debian) 或 sudo yum install git (CentOS)

2. 基本配置

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

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

# 查看配置
git config --list

# 设置默认编辑器为VS Code
git config --global core.editor "code --wait"

三、Git常用命令详解

1. 创建和克隆仓库

# 在当前目录初始化新仓库
git init

# 克隆远程仓库
git clone <repository-url>

# 克隆指定分支
git clone -b <branch-name> <repository-url>

# 克隆深度为1(只获取最新版本,节省时间空间)
git clone --depth 1 <repository-url>

2. 基本工作流程

# 检查当前文件状态
git status

# 添加文件到暂存区
git add <file-name>       # 添加特定文件
git add .                 # 添加所有更改文件
git add -A                # 添加所有更改(包括删除的文件)
git add -u                # 添加已跟踪文件的更改

# 提交更改
git commit -m "提交信息"

# 提交并跳过暂存区(自动add已跟踪文件)
git commit -a -m "提交信息"

# 修改最后一次提交
git commit --amend

3. 查看历史记录

# 查看提交历史
git log

# 简洁版历史
git log --oneline

# 显示文件更改详情
git log -p

# 显示最近n条提交
git log -n <number>

# 图形化显示分支
git log --graph --oneline --all

# 显示某个文件的修改历史
git log -p <file-name>

# 显示某人的提交
git log --author="name"

# 按日期筛选
git log --since="1 week ago"

4. 分支管理

# 查看所有分支
git branch       # 本地分支
git branch -a    # 所有分支(包括远程)
git branch -v    # 查看分支最后提交

# 创建新分支
git branch <branch-name>

# 切换分支
git checkout <branch-name>

# 创建并切换分支
git checkout -b <branch-name>

# 删除分支
git branch -d <branch-name>    # 安全删除(已合并)
git branch -D <branch-name>    # 强制删除(未合并)

# 重命名当前分支
git branch -m <new-name>

# 合并分支
git merge <branch-name>

# 变基(将当前分支变基到目标分支)
git rebase <branch-name>

5. 远程操作

# 查看远程仓库
git remote -v

# 添加远程仓库
git remote add <remote-name> <repository-url>

# 重命名远程仓库
git remote rename <old-name> <new-name>

# 删除远程仓库
git remote remove <remote-name>

# 获取远程更新但不合并
git fetch <remote-name>

# 拉取远程更新并合并
git pull <remote-name> <branch-name>

# 推送到远程
git push <remote-name> <branch-name>

# 推送并设置上游分支
git push -u <remote-name> <branch-name>

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

# 删除远程分支
git push <remote-name> --delete <branch-name>

6. 撤销操作

# 撤销工作区修改(未add)
git checkout -- <file-name>

# 撤销暂存区修改(已add)
git reset HEAD <file-name>

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

# 撤销提交(保留更改在暂存区)
git reset --mixed HEAD~1    # 默认选项

# 彻底撤销提交(丢弃更改)
git reset --hard HEAD~1

# 恢复特定提交
git revert <commit-hash>

# 恢复丢失的提交(通过reflog)
git reflog
git reset --hard <commit-hash-from-reflog>

7. 储藏与清理

# 储藏当前更改
git stash

# 储藏包括未跟踪文件
git stash -u

# 查看储藏列表
git stash list

# 恢复最近储藏
git stash apply

# 恢复指定储藏
git stash apply stash@{n}

# 删除储藏
git stash drop stash@{n}

# 恢复并删除储藏
git stash pop

# 清理未跟踪文件
git clean -n    # 预览将被删除的文件
git clean -f    # 删除未跟踪文件
git clean -fd   # 删除未跟踪文件和目录

8. 标签管理

# 列出标签
git tag

# 创建轻量标签
git tag <tag-name>

# 创建附注标签
git tag -a <tag-name> -m "tag message"

# 查看标签详情
git show <tag-name>

# 删除标签
git tag -d <tag-name>

# 推送标签到远程
git push <remote-name> <tag-name>

# 推送所有标签
git push <remote-name> --tags

# 删除远程标签
git push <remote-name> :refs/tags/<tag-name>

9. 子模块管理

# 添加子模块
git submodule add <repository-url> <path>

# 克隆包含子模块的项目
git clone <repository-url>
git submodule init
git submodule update

# 或者一步完成
git clone --recurse-submodules <repository-url>

# 更新子模块
git submodule update --remote

10. 高级操作

# 交互式暂存
git add -i

# 交互式变基
git rebase -i HEAD~n

# 二分查找引入bug的提交
git bisect start
git bisect bad
git bisect good <commit-hash>
# 测试后标记当前提交为good或bad
git bisect reset   # 结束二分查找

# 重写提交历史(谨慎使用)
git filter-branch

四、Git最佳实践

  1. 提交规范
    • 提交信息要清晰明确
    • 遵循约定式提交(Conventional Commits)
    • 示例: feat: 添加用户登录功能fix: 修复登录页面样式问题
  1. 分支策略
    • 主分支(master/main)保持稳定
    • 功能开发使用feature分支
    • 修复bug使用hotfix分支
    • 长期维护使用release分支
  1. 工作流程
    • 频繁提交,小步前进
    • 一个提交只做一件事
    • 提交前检查更改git diff
    • 定期从上游拉取更新
  1. .gitignore文件
    • 忽略不需要版本控制的文件(如日志、构建产物等)

示例内容:

    • text
*.log
node_modules/
.DS_Store
*.exe

五、常见问题解决

  1. 冲突解决
    • 发生冲突时,Git会在文件中标记冲突部分
    • 手动编辑文件解决冲突
    • 使用git add标记冲突已解决
    • 完成合并git commit
  1. 撤销公共历史
    • 避免对已推送的历史进行reset --hard
    • 使用git revert创建反向提交
  1. 大文件处理
    • 使用Git LFS管理大文件
    • 避免将二进制文件加入Git
  1. 凭证存储
    • 使用SSH密钥避免每次输入密码

或配置凭证存储:

    • bashgit config --global credential.helper store

六、可视化工具推荐

  1. Git GUI客户端
    • GitHub Desktop
    • Sourcetree
    • GitKraken
    • Tower
  1. IDE集成
    • VS Code Git集成
    • IntelliJ IDEA Git工具
    • Eclipse EGit
  1. 在线工具
    • GitHub
    • GitLab
    • Bitbucket

结语

Git是一个功能强大且灵活的工具,本文介绍的只是最常用的命令和操作。随着使用经验的积累,你会逐渐发现更多高级用法来提高工作效率。记住,Git的核心思想是记录项目的历史变化,而不是简单地保存当前状态。掌握Git不仅能帮助你更好地管理代码,还能让你在团队协作中游刃有余。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐