Git基本使用
本文最后更新于 2025年8月25日 下午
参考:
Git 教程 | 菜鸟教程
常用 Git 命令清单 - 阮一峰的网络日志
Git 使用规范流程 - 阮一峰的网络日志
工作流程
工作区 => 暂存区 => 版本库 => 远程仓库

创建仓库
新建仓库
git init 在当前目录新建一个 Git 仓库,会在当前目录生成一个 .git 目录
git init <dirName> 在当前目录新建一个 dirName Git 仓库目录,会在 dirName 目录生成一个 .git 目录
克隆仓库
git clone <repo> 从 repo 地址克隆仓库到当前目录,repo 地址可以是 URL 地址也可以是本地地址
git clone <repo> <dirName> 从 repo 地址克隆仓库到当前目录下的 dirName 目录
提交修改
添加
git add <fileName> 添加当前目录下的 fileName 文件到暂存区(可同时添加多个)
git add <dirName> 添加当前目录下的 dirName 目录到暂存区
git add . 添加当前目录下的所有内容到暂存区
提交
git commit -m <message> 将暂存区的所有内容提交到版本库,message 是备注信息
git commit <fileName> -m <message> 将暂存区的 fileName 文件提交到版本库(可同时提交多个)
git commit -a 修改文件后不需要执行 git add 命令,直接提交
回退
git checkout <fileName> 从暂存区回退 fileName 文件到工作区
git checkout . 从暂存区回退所有内容到工作区
git checkout <commit> <fileName> 从版本库的 commit 版本回退 fileName 文件到暂存区和工作区
git reset HEAD^ 重置暂存区所有内容到上个版本,但工作区不变
git reset HEAD^^ 重置暂存区所有内容到上上个版本,但工作区不变
git reset --hard 重置暂存区与工作区所有内容到上个版本
git reset <fileName> 重置暂存区 fileName 文件到上个版本,但工作区不变
git reset <commit> 重置当前分支的指针为 commit 版本,但工作区不变
git reset --keep <commit> 重置当前分支的 HEAD 为指定 commit 版本,但保持暂存区和工作区不变
git reset --hard <commit> 重置当前分支的 HEAD 为指定 commit 版本,同时重置暂存区和工作区为 commit 版本
git revert <commit> 新建 commit 版本用来撤销旧版本,后者的所有变化都将被前者抵消,并且应用到当前分支
查看文件状态
git status 查看当前版本状态(在你上次提交之后是否有对文件进行再次修改)
git status -s 获得简短的结果
删除工作区文件
https://www.runoob.com/git/git-rm.html
操作工作区文件
https://www.runoob.com/git/git-mv.html
远程操作
远程仓库的操作
git remote -v 显示远程仓库所有分支的信息
git remote show <remote> 显示远程仓库 remote 分支的信息
git remote add <repo> <url> 添加远程 url 地址仓库,并命名该仓库在本地的名字为 repo(常命名为 origin)
上传代码并合并
git push <repo> <branchName1>:<branchName2> 上传本地仓库的 branchName1 分支到远程 repo 仓库的 branchName2 分支
git push <repo> <branchName> 上传本地仓库的 branchName 分支到远程 repo 仓库的 branchName 分支(本地分支名与远程分支名相同)
git push <repo> --force 强行推送本地仓库的当前分支到远程 repo 仓库,即使有冲突(本地分支名与远程分支名相同)
git push <repo> --all 推送本地仓库的所有分支到远程 repo 仓库
下载代码并合并
git pull <repo> <branchName1>:<branchName2> 从远程 repo 仓库下载 branchName1 分支到本地仓库 branchName2 分支
git pull <repo> <branchName> 从远程 repo 仓库下载 branchName 分支到本地仓库 branchName 分支(本地分支名与远程分支名相同)
从远程获取代码库
git fetch <repo> 下载远程 repo 仓库的所有变动
分支管理
列出分支
git branch 列出所有本地分支
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支
新建分支
git branch <branchName> 新建 branchName 分支,但依然停留在当前分支
git checkout -b <branchName> 新建 branchName 分支并立即切换到该分支下
git branch <branchName> <version> 新建 branchName 分支,指向版本库的指定版本
git branch --track <branchName> <remoteBranch> 新建 branchName 分支,与远程的 remoteBranch 分支建立追踪关系
切换分支
git checkout <branchName> 从当前分支切换到 branchName 分支
git checkout - 从当前分支切换到切换到上一个分支
删除分支
git branch -d <branchName> 删除本地 branchName 分支
git branch -d -r <repo> <branchName> 删除远程 repo 仓库的 branchName 分支
合并分支
git merge <branchName> 合并 branchName 分支到当前分支
git cherry-pick <version> 从版本库选择一个版本合并进当前分支
重命名分支
git branch -M <oldbranchName> <newbranchName> 将本地 oldbranchName 分支重命名为 newbranchName
重命名远程分支的做法:删除远程待修改分支后上传本地分支到远程
查看提交
查看历史提交记录
git log 查看历史提交记录(从近到远)
git log --oneline 查看历史记录的简洁版本
git log --graph 查看历史中何时出现分支和合并
git log --reverse 逆向查看历史提交记录(从远到近)
查看指定文件历史修改记录
git blame <fileName> 以列表形式查看 fileName 文件的历史修改记录
标签
查看标签
git tag 列出所有标签
新建标签
git tag <tagName> 新建名为 tagName 标签
选项解释
- -f –force:强制
- -d –delete:删除
- -D –delete –force 的快捷键
- -m –move:移动或重命名
- -M –move –force 的快捷键
- -r –remote:远程
- -a –all:所有