git 命令汇总

10 阅读5分钟

一直用的都是SourceTree,结果最近遇到不好使了,说用用git命令吧,没记住。干脆总结一下吧! 以下是 Git 的常用命令 分类整理,涵盖基础操作、分支管理、远程仓库、标签管理、撤销修改、查看比较等场景。每个命令都附有简要说明和示例,方便快速查阅。


一、基础操作

  1. 初始化仓库

    • git init:初始化一个新的 Git 仓库。
    • git init --initial-branch main:指定默认分支名称(如 main)。
    • git clone <url>:克隆远程仓库到本地。
  2. 配置

    • git config --global user.name "Your Name":设置全局用户名。
    • git config --global user.email "email@example.com":设置全局邮箱。
    • git config --list:查看当前配置。
  3. 添加/提交文件

    • git add <file>:将指定文件添加到暂存区。
    • git add .:添加当前目录下所有文件到暂存区。
    • git commit -m "message":提交暂存区内容到本地仓库。
    • git commit --amend:修改最近一次提交的内容或提交信息。
    • git commit -a:直接提交工作区所有已跟踪文件的修改。
  4. 状态查看

    • git status:查看工作区和暂存区的状态。
    • git diff:查看工作区与暂存区的差异。
    • git log:查看提交历史。
    • git blame <file>:查看文件每一行的修改记录及作者。

二、分支管理

  1. 分支操作

    • git branch:列出所有本地分支。
    • git branch <branch-name>:创建新分支。
    • git checkout <branch-name>:切换分支。
    • git checkout -b <branch-name>:创建并切换到新分支。
    • git merge <branch-name>:将指定分支合并到当前分支。
    • git rebase <branch-name>:将当前分支的提交移到指定分支之后。
    • git branch -d <branch-name>:删除本地分支。
    • git branch -D <branch-name>:强制删除本地分支(即使未合并)。
    • git branch -r:查看远程分支。
    • git branch -a:查看所有分支(本地 + 远程)。
    • git branch -m <old-name> <new-name>:重命名分支。
  2. 合并与冲突

    • git merge --abort:中止当前合并操作。
    • git cherry-pick <commit-hash>:选择性地应用某个提交。
    • git cherry-pick --continue:继续 cherry-pick 操作。
    • git cherry-pick --abort:中止 cherry-pick 操作。

三、远程仓库

  1. 远程操作

    • git remote -v:查看远程仓库地址。
    • git remote add <name> <url>:添加远程仓库。
    • git remote rename <old-name> <new-name>:重命名远程仓库。
    • git remote remove <name>:删除远程仓库。
    • git remote set-url <name> <new-url>:修改远程仓库地址。
  2. 推送与拉取

    • git push <remote> <branch>:推送本地分支到远程仓库。
    • git push -u <remote> <branch>:首次推送时设置上游分支。
    • git push --tags:推送所有标签到远程仓库。
    • git fetch <remote>:从远程仓库获取最新内容(不合并)。
    • git pull <remote> <branch>:拉取远程分支并合并到当前分支。
    • git pull --rebase:拉取后使用 rebase 而非 merge。
  3. 清理远程分支

    • git fetch --prune:清理本地已删除的远程分支。
    • git remote prune <remote>:清理指定远程仓库的无效引用。

四、标签管理

  1. 标签操作
    • git tag:列出所有标签。
    • git tag <tag-name>:创建轻量标签。
    • git tag -a <tag-name> -m "message":创建带注释的标签。
    • git tag -d <tag-name>:删除本地标签。
    • git push <remote> <tag-name>:推送单个标签到远程。
    • git push --tags:推送所有标签到远程。

五、撤销与修改

  1. 撤销操作

    • git reset --hard HEAD:撤销工作区和暂存区的所有修改(危险操作!)。
    • git reset --soft HEAD^:撤销上一次提交,保留修改在暂存区。
    • git reset --mixed HEAD^:撤销上一次提交,保留修改在工作区(默认)。
    • git checkout <file>:撤销指定文件的修改。
    • git revert <commit-hash>:生成一个新的提交,撤销指定提交的更改。
  2. 暂存与恢复

    • git stash:保存当前工作区的修改。
    • git stash apply:恢复最近一次保存的修改。
    • git stash pop:恢复并删除最近一次保存的修改。
    • git stash list:查看所有保存的修改。
    • git stash drop <stash-name>:删除指定的保存记录。
    • git stash clear:删除所有保存的修改。

六、高级操作

  1. 调试与分析

    • git bisect start:启动二分查找问题提交。
    • git bisect good/bad:标记提交为正常或有问题。
    • git bisect reset:退出二分查找模式。
  2. 清理与优化

    • git clean -f:删除未跟踪的文件。
    • git clean -fd:删除未跟踪的文件和目录。
    • git gc:清理和优化仓库。
    • git reflog:查看操作历史(包括 HEAD 指针移动)。
  3. 其他实用命令

    • git ls-files:列出 Git 跟踪的文件。
    • git log --oneline:以简洁格式查看提交历史。
    • git log --graph:可视化提交历史。
    • git log --since="2 days ago":查看最近两天的提交。
    • git log --author="name":按作者筛选提交。
    • git log --grep="keyword":按提交信息筛选提交。

七、快捷方式与别名

  1. 设置别名

    git config --global alias.co checkout
    git config --global alias.br branch
    git config --global alias.ci commit
    git config --global alias.st status
    

    设置后可使用 git co 代替 git checkout

  2. 自定义命令

    git config --global alias.last 'log -1'
    

    使用 git last 查看最近一次提交。


八、常见错误与修复

  1. 解决冲突

    • 手动编辑冲突文件,标记为 <<<<<<<, =======, >>>>>>>
    • 使用 git add <file> 标记冲突已解决。
    • 最终执行 git commit 完成合并。
  2. 恢复误删文件

    • git fsck --lost-found:查找孤立的提交或文件。
    • 通过 git show <commit-hash>:<file-path> 恢复文件。

九、扩展工具

  1. 图形化工具

    • SourceTree:可视化分支、提交和冲突。
    • GitKraken:跨平台图形化管理工具。
    • GitHub Desktop:适合 GitHub 用户的简单操作。
  2. 自动化脚本

    • 使用 git hook 自定义提交前/后行为(如 pre-commit, post-commit)。

十、学习资源


总结

Git 的命令丰富多样,掌握核心命令(如 add, commit, branch, push, pull)即可满足日常开发需求。对于高级功能(如 rebase, cherry-pick, stash),建议结合实际场景逐步学习。如果需要更详细的帮助,可以使用 git help <command> 查看具体命令的用法。