菜鸟科技网

Git终端命令大全,常用命令有哪些?

Git 命令速查表

类别 命令 简要说明
仓库配置 git config 配置 Git 的用户信息、别名等
仓库创建与克隆 git init 在当前目录初始化一个 Git 仓库
git clone 克隆一个远程仓库到本地
状态与信息 git status 查看工作区、暂存区的状态
git log 查看提交历史
git diff 查看工作区与暂存区,或不同提交间的差异
代码暂存与提交 git add 将文件添加到暂存区
git commit 将暂存区的文件提交到本地仓库
git rm 从工作区和暂存区删除文件
git mv 移动或重命名文件
分支管理 git branch 查看、创建、删除分支
git checkout 切换分支或恢复文件
git switch (Git 2.23+) 更直观地切换分支
git merge 合并分支到当前分支
远程仓库交互 git remote 查看、管理远程仓库别名
git fetch 获取远程仓库的更新,但不合并
git pull 获取远程仓库的更新并合并到当前分支
git push 将本地分支的更新推送到远程仓库
撤销与回退 git reset 重置 HEAD、暂存区或工作区的指针
git revert 创建一个新的提交来撤销某个提交的更改
标签管理 git tag 查看、创建、删除标签
存储与清理 git stash 暂时保存未提交的修改
git clean 清理工作区中未被跟踪的文件

基础配置

在开始使用 Git 前,你需要配置用户信息,这个信息会记录在你的每一次提交中。

Git终端命令大全,常用命令有哪些?-图1
(图片来源网络,侵删)
# 配置用户名,会在提交信息中显示
git config --global user.name "Your Name"
# 配置邮箱
git config --global user.email "you@example.com"
# 查看所有配置项
git config --list
# 查看某一项的配置
git config user.name
# 设置默认分支名(Git 2.28+ 推荐设置为 main)
git config --global init.defaultBranch main
# 设置命令别名,简化操作
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm 'commit -m'

仓库的创建与克隆

git init

在当前目录创建一个新的 Git 仓库。

# 在当前目录初始化
git init
# 指定目录名初始化
git init new-project

git clone

将一个远程仓库完整地复制到本地。

# 克隆整个仓库
git clone https://github.com/user/repo.git
# 克隆并指定本地文件夹名
git clone https://github.com/user/repo.git my-project

状态与信息查看

git status

查看工作区、暂存区的状态,告诉你哪些文件被修改了、哪些被暂存了。

# 查看简短状态
git status -s
# 输出示例:
# M  README.md      # 文件被修改,但未暂存
# A  main.js        # 文件已被暂存
# ?? new-file.txt  # 文件未被 Git 追踪

git log

查看项目的提交历史。

Git终端命令大全,常用命令有哪些?-图2
(图片来源网络,侵删)
# 查看详细的提交历史
git log
# 查看简化的一行提交历史
git log --oneline
# 查看最近 5 条提交
git log -5
# 查看图形化的分支合并历史
git log --graph --oneline --all
# 查看某人的提交记录
git log --author="John Doe"
# 查看某个文件的修改历史
git log --follow -- filename

git diff

查看文件之间的差异。

# 查看工作区与暂存区之间的差异(未暂存的修改)
git diff
# 查看暂存区与最新提交之间的差异(已暂存的修改)
git diff --staged  # 或 git diff --cached
# 查看两个提交之间的差异
git diff <commit-hash-1> <commit-hash-2>
# 查看两个分支在某个文件上的差异
git diff main feature-branch -- specific-file.txt

代码的暂存与提交

git add

将修改的文件添加到暂存区,是提交前的必要步骤。

# 添加单个文件
git add README.md
# 添加所有修改的文件
git add .
# 添加所有修改和新建的文件,但不包括被删除的
git add -u
# 添加所有修改、新建和删除的文件
git add -A
# 交互式地添加文件的某一部分(非常强大!)
git add -p

git commit

将暂存区的文件永久保存到本地仓库。

# 创建一个普通提交
git commit -m "feat: add user login functionality"
# 提交并包含所有已暂存的修改,跳过暂存区(相当于 git add + commit)
git commit -a -m "fix: resolve a typo"
# 修改上一次的提交信息(未推送到远程时)
git commit --amend
# 修改上一次的提交并包含新的文件(例如忘记 add 的文件)
git add forgotten_file.txt
git commit --amend --no-edit # 保留上次的提交信息

git rm

从 Git 仓库中移除文件。

Git终端命令大全,常用命令有哪些?-图3
(图片来源网络,侵删)
# 从工作区和暂存区删除文件
git rm filename.txt
# 仅从暂存区删除,但保留在工作区(文件内容还在,只是不被 Git 追踪)
git rm --cached filename.txt

git mv

移动或重命名文件。

# 重命名文件
git mv old-name.txt new-name.txt
# 移动文件到新目录
git mv src/app.js components/

分支管理

分支是 Git 的核心功能,允许你并行开发不同的功能。

git branch

查看、创建、删除分支。

# 查看所有本地分支,当前分支会用 * 标记
git branch
# 查看所有分支(包括远程分支)
git branch -a
# 创建一个新分支
git branch new-feature
# 基于当前分支创建并切换到新分支(推荐)
git checkout -b new-feature
# 删除一个本地分支(必须先切换到其他分支)
git branch -d feature-to-delete
# 强制删除一个未合并的分支
git branch -D feature-to-delete

git checkout

切换分支或恢复文件。

# 切换到已存在的分支
git checkout main
# 创建并切换到新分支(等同于 git branch + checkout)
git checkout -b another-feature
# 恢复某个文件到最新提交的状态(会覆盖工作区修改)
git checkout -- filename.txt

git switch (Git 2.23+)

更现代、更直观的切换分支命令。

# 切换到已存在的分支
git switch main
# 创建并切换到新分支
git switch -c my-new-branch
# 切换并创建分支,并基于另一个提交
git switch -c bug-fix-branch abc123def

git merge

将指定分支的合并到当前分支。

# 假设你当前在 main 分支,将 feature-branch 合并过来
git checkout main
git merge feature-branch
# 查看合并信息
git log --merge

与远程仓库交互

远程仓库通常指 GitHub, GitLab, Gitee 等。

git remote

管理远程仓库的别名(默认是 origin)。

# 查看所有远程仓库别名
git remote
# 查看远程仓库的详细信息(如 URL)
git remote -v
# 添加一个新的远程仓库
git remote add upstream https://github.com/original-author/repo.git
# 重命名远程仓库别名
git remote rename origin old-origin
# 删除一个远程仓库别名
git remote remove upstream

git fetch

从远程仓库获取最新的数据,但不会合并或修改你当前的本地文件。

# 获取所有远程仓库的最新数据
git fetch
# 获取特定远程仓库的最新数据
git fetch origin

git pull

相当于 git fetch + git merge,从远程仓库获取最新数据并合并到当前分支。

# 从默认远程仓库(origin)的默认分支(main/master)拉取
git pull
# 从特定远程仓库的特定分支拉取
git pull origin feature-branch

git push

将你本地的分支推送到远程仓库。

# 将当前分支推送到远程同名分支
git push
# 将本地分支推送到远程仓库,并建立关联关系(首次推送时常用)
git push -u origin feature-branch
# 强制推送(会覆盖远程分支,慎用!)
git push --force

撤销与回退

这是最容易出错的地方,请务必小心操作。

git reset

将 HEAD、暂存区或工作区的指针回退到某个状态,它会修改历史

# 模式:--soft (只移动 HEAD 指针)
# 用途:撤销最后一次提交,但保留修改在暂存区
git reset --soft HEAD~1
# 模式:--mixed (默认,移动 HEAD 和暂存区指针)
# 用途:撤销最后一次提交,并将修改放回工作区(未暂存状态)
git reset --mixed HEAD~1
# 等同于
git reset HEAD~1
# 模式:--hard (移动 HEAD、暂存区和工作区指针)
# 用途:彻底撤销最后一次提交,并丢弃所有修改(危险!)
git reset --hard HEAD~1
# 回退到某个特定的提交,之后的所有提交都会被丢弃
git reset --hard <commit-hash>

git revert

创建一个新的提交来撤销某个提交的更改,它不会修改历史,而是添加新的历史。

# 撤销某个提交的更改,并创建一个新的提交
git revert <commit-hash>
# 如果撤销的提交与其他提交有冲突,会进入编辑模式让你解决

标签管理

标签通常用于标记重要的版本点,如 v1.0.0

# 查看所有标签
git tag
# 查看符合模式的标签
git tag -l "v1.*"
# 创建一个轻量级标签
git tag v1.0.0
# 创建一个带注释的标签(推荐)
git tag -a v1.0.1 -m "Version 1.0.1: Add new dashboard"
# 查看标签的详细信息
git show v1.0.1
# 推送单个标签到远程仓库
git push origin v1.0.0
# 推送所有标签到远程仓库
git push origin --tags

存储与清理

git stash

当你正在一个分支上工作,但需要切换到另一个分支处理紧急任务时,可以使用 stash 来临时保存你的工作进度。

# 暂存当前工作区的所有修改
git stash
# 暂存时附上说明信息
git stash push -m "WIP: Add user profile page"
# 查看所有存储列表
git stash list
# 应用最近的存储,并将其从列表中移除
git stash pop
# 应用最近的存储,但不移除它
git stash apply
# 删除某个存储
git stash drop stash@{0}
# 清空所有存储
git stash clear

git clean

清理工作区中未被 Git 追踪的文件(危险操作,请谨慎使用)。

# 查看将要被删除的文件(干跑模式)
git clean -n
# 删除未被追踪的文件,但忽略被 .gitignore 忽略的文件
git clean -f
# 删除未被追踪的目录和文件
git clean -df
# 强制删除,不进行任何提示(极度危险!)
git clean -xdf

这份大全涵盖了 Git 90% 以上的日常使用场景,记住几个核心概念:

  • 工作区:你看到和编辑文件的目录。
  • 暂存区:一个临时区域,用于存放下次要提交的文件。
  • 本地仓库:Git 保存项目元数据和对象数据库的地方。
  • 远程仓库:托管在服务器上的仓库,用于多人协作。

工作流通常是: 修改文件 -> git add -> git commit -> git push

多加练习,这些命令很快就会成为你的肌肉记忆!祝你使用愉快!

分享:
扫描分享到社交APP
上一篇
下一篇