Git 常用命令速查表
一、 仓库初始化和配置
命令 | 作用 |
---|---|
git init | 在当前目录初始化一个新的 Git 仓库,创建 .git 文件夹。 |
git clone (远程仓库地址/url) | 克隆(下载)一个远程仓库及其所有的版本历史到本地 。[ssh\http] |
git config --global user.name “名称” | 全局设置你的用户名(提交者信息)。 |
git config --global user.email “邮箱” | 全局设置你的邮箱地址(提交者信息)。 |
git config --list | 列出当前所有的 Git 配置。 |
二、 日常基本操作(单人开发核心)
命令 | 作用 |
---|---|
git status | 查看工作区和暂存区的状态 (哪些文件被修改、已暂存等)。这是最常用的命令。 |
git add (文件名如:hello.txt) | 将指定文件的修改添加到暂存区(Stage)。 |
git add . 或 git add -A | 将当前目录所有的修改添加到暂存区。 |
git commit -m ** “提交信息”** | 将暂存区的内容提交到本地仓库,并附上提交说明。 |
git commit -am “描述” “提交信息” | 相当于 git add . + git commit -m,但对未跟踪的新文件无效。 |
git restore (文件名如:hello.txt) | 丢弃工作区中指定文件的修改(恢复到最近一次 git commit 或 git add 的状态)。(Git 2.23+) |
git restore --staged (文件名:hello.txt) | 将文件从暂存区撤出(Unstage),但保留工作区的修改。(Git 2.23+) |
git checkout – (文件名:hello.txt) | 旧版命令,作用同 git restore ,用于丢弃工作区修改。 |
git reset HEAD (文件名:hello.txt) | 旧版命令,作用同 git restore --staged ,用于取消暂存。 |
git diff | 查看工作区和暂存区的差异(未 add 的修改)。 |
git diff --staged (文件名:hello.txt) | 查看暂存区和本地仓库的差异(已 add 但未 commit 的修改)。 |
git log | 查看当前分支的提交历史。 |
git log --oneline | 以简洁的单行模式查看提交历史。 |
git log --graph | 以拓扑图模式查看提交历史,非常适合查看分支合并情况 |
三、分支与合并
命令 | 作用 |
---|---|
git branch | 列出所有本地分支,当前分支前会有一个 * 号。 |
git branch -a | 列出所有分支(包括本地和远程分支)。 |
git branch 分支名 | 创建一个新的分支 |
git checkout 分支名 | 切换到指定分支 |
git switch 分支名 | 切换到指定分支 (git checkout 的更清晰替代命令,专用于切换) |
git checkout -b 新分支名 | 创建 并立即 切换到新分支 |
git switch -c 新分支名 | 创建 并立即 切换到新分支(git checkout -b 的现代替代) |
git merge 分支名 | 将指定 分支 合并 到当 前分支 |
git branch -d 分支名 | 删除指定的分支(如果该分支已被合并) |
git branch -D 分支名 | 强制删除指定的分支(即使该分支未被合并) |
git rebase 分支名 | 变基,将当前分支的提交“移动”到另一个分支的最新提交之后,形成线性的历史。 |
– | – |
– | – |
查看分支 | |
git branch | 命令可以查看本地分支。当前分支前面会有一个星号(*)。 |
git branch -r | 命令可以查看远程分支(线上分支)。 |
** git branch -a** | 命令可以查看所有分支(包括本地和远程)。 |
小总结
区分本地和远程分支的关键点:
命名约定:远程分支有 远程名/ 前缀(如 origin/main)
查看命令:
git branch - 只显示本地分支
git branch -r - 只显示远程分支
git branch -a - 显示所有分支
跟踪关系:使用 git branch -vv 查看本地分支与远程分支的关联
补充: 命名约定区分
Git 使用特定的命名约定来区分本地和远程分支:
本地分支:直接使用分支名称,如 main、develop、feature/login
远程分支:使用 远程仓库名/分支名 的格式,如 origin/main、origin/develop
常见的远程仓库名称:
origin - 默认的远程仓库名称
upstream - 常用于指向原始仓库(当你 fork 了一个项目时)
3. 查看分支详细信息
使用 git show-branch 命令可以查看分支的更多信息:
使用 git branch -vv 命令可以查看本地分支与远程分支的跟踪关系:
查看远程仓库信息
使用 git remote show 命令查看远程仓库的详细信息
四、 查看历史与日志
命令 | 作用 |
---|---|
git log | 查看当前分支的提交历史。 |
git log --oneline | 以简洁的单行模式查看提交历史。 |
git log --graph --oneline --all | 以图形化方式查看所有分支的提交历史,非常直观。 |
git show commit-id | 显示某一次提交的详细内容变化。 |
git blame 文件名 | 逐行显示指定文件的每一行最后是谁修改的。 |
git diff | 查看工作区与暂存区的差异(未 add 的修改) |
git diff --staged | 查看暂存区与最新一次提交的差异(已 add 的修改) |
五、 提交描述
命令 | 作用 |
---|---|
git commit -m “提交信息” | 将暂存区的内容提交到本地仓库,创建一个新的版本记录 |
git commit -am “提交信息” | 组合操作:将所有已跟踪且修改的文件添加到暂存区并提交 (注意: 对未跟踪的新文件无效) |
六、 撤销与回退(重要且易错)
谨慎使用这些命令,尤其是在公共分支上。
命令 | 作用 | 风险 |
---|---|---|
git restore 文件 | 丢弃工作区的修改(危险!修改将永久丢失)。 | 高 |
git checkout . | 丢弃所有工作区的修改(非常危险!)。 | 非常高 |
git reset --soft commit-id | 回退到某个提交,但保留工作区和暂存区的内容。适合重新提交。 | 中 |
git reset --mixed commit-id | 默认模式。回退到某个提交,保留工作区内容,但重置暂存区。 | 中 |
git reset --hard commit-id | 彻底回退到某个提交,丢弃工作区和暂存区的所有内容。极其危险! | 非常高 |
git revert commit-id | 创建一个新的提交来撤销指定的提交。这是一种安全的撤销方式,因为它不会重写历史。 | 低 |
git commit --amend | 修补提交,将暂存区的修改合并到上一次提交中,可以修改提交信息。 | 中 |
七、 临时 存储/保存现场
命令 | 作用 |
---|---|
git stash 或 git stash push | 将当前工作区和暂存区的修改临时储藏起来,让工作区变干净。 |
git stash list | 查看所有的储藏列表。 |
git stash pop | 应用最近一次的储藏并将其从栈中删除。 |
git stash apply | 应用某个储藏,但不将其从栈中删除。 |
git stash drop | 删除指定的储藏。 |
git stash save “message” | 保存现场并添加说明信息。 |
git stash apply stash@{n} | 恢复指定的现场(如 stash@{0}),但不删除记录。 |
git stash drop stash@{n} | 删除指定的现场记录。 |
八、 远程协作
命令 | 作用 |
---|---|
git remote add origin “远程仓库地址” | 关联一个远程仓库,并为其起别名为 origin(通常默认就用这个) |
git push -u origin “分支名” | 将本地分支的提交推送到远程仓库,-u 表示建立追踪,后续可直接 git push |
**git push ** | 推送当前分支到其关联的远程分支(如果已建立追踪) |
**git pull ** | 拉取远程分支的更新并合并到当前分支(=git fetch + git merge) |
git fetch | 仅从远程仓库获取最新版本到本地,但不自动合并(更安全,可先检查再合并) |
git clone “远程仓库地址” | 克隆(下载)远程仓库到本地(也属于此分类) |
— | — |
— | — |
git remote -v | 查看已配置的远程仓库地址(显示 fetch 和 push 的 URL)。 |
git remote add “name” “url” | 添加一个新的远程仓库地址,并为其起一个别名(通常默认为 origin)。 |
git fetch “remote” | 从远程仓库获取最新内容到本地(如下载分支、标签),但不会自动合并到工作区。 |
git pull remote “branch” | 从远程拉取代码并立即合并到当前分支。相当于 git fetch + git merge。 |
git push remote “branch” | 将本地分支的提交推送到远程仓库。 |
git push -u remote “branch” | 推送并将本地分支与远程分支建立追踪关系(-u 是 --set-upstream 的缩写),之后可以直接用 git push。 |
git push origin --delete “branch” | 删除远程仓库的指定分支。 |
git push origin --delete “branch” | 删除远程仓库的指定分支。 |
八、 其他
命令 | 作用 |
---|---|
git tag 标签名 | 为当前提交打上一个轻量级标签(常用于版本发布,如 v1.0.0) |
.gitignore 文件 | 不是一个命令,而是一个配置文件。在里面写入文件或目录模式,Git 就会自动忽略它们 |
小贴士
• origin 是克隆仓库时 Git 默认给远程仓库起的别名。
• master 或 main 是 Git 初始化仓库时默认创建的主分支名称。
• HEAD 是一个指针,它总是指向当前所在的本地分支的最新提交。
• 谨慎使用 git reset --hard 和 git push -f,这些命令会覆盖历史,可能导致协作问题或数据丢失。
• git pull 和 git fetch 的区别:fetch 更安全,它只下载不同步的提交,让你检查后再手动合并;pull 是自动合并,有时可能会产生冲突需要你解决。
使用建议
勤 commit:提交频率可以很高,每个小功能完成都可以是一次提交,便于回退和追踪。
写好的提交信息:-m 后的描述信息要清晰明了,说明本次提交的目的。
push 前先 pull:在推送代码到远程前,先拉取一下远程的最新代码,避免冲突。
理解工作区、暂存区、仓库:这是 Git 的核心概念,理解了它们就能更好地使用 add, commit, status, diff 等命令。
大胆使用分支:分支开销极小,为新功能、修复 Bug 创建独立分支是推荐的工作流(如 Git Flow)。
希望这份列表能对您有所帮助!