1418 字
7 分钟
git - 常用命令

commit 规范#

可以创建一个 commit_msg.txt 文件, 然后使用 git commit -F commit_msg.txt 来规范格式


举例:

fix(login): 修复登录页加载失败的问题

因为 API 返回的数据结构变了,导致解析失败, 这里调整了逻辑, 详情如下:

  • 1
  • 2

类型说明
feat新功能
fix修 bug
refactor重构, 不新增功能, 也不修 bug
docs改文档, 如 README
style改代码风格, 不影响功能
test加测试, 改测试
chore杂项, 比如改 .gitignore, 构建脚本
perf性能优化
ciCI/CD 相关改动
build改构建系统或者依赖
revert回滚某个提交

1. 配置 Git#

初始化 Git 配置#

Terminal window
git config --global user.name "Your Name" # 设置用户名
git config --global user.email "you@example.com" # 设置邮箱
git config --global core.editor "vim" # 设置默认编辑器
git config --global core.autocrlf input # 处理换行符(Linux/Mac)
git config --global core.autocrlf true # 处理换行符(Windows)

查看配置#

Terminal window
git config --list # 查看所有配置信息

2. 基本操作#

初始化 Git 仓库#

Terminal window
git init # 初始化一个本地 Git 仓库

克隆远程仓库#

Terminal window
git clone <repository-url> # 克隆远程仓库到本地

3. 分支操作#

查看分支#

Terminal window
git branch # 列出本地分支
git branch -r # 列出远程分支
git branch -a # 列出所有分支(本地 + 远程)

创建分支#

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

切换分支#

Terminal window
git checkout <branch-name> # 切换到某个分支
git switch <branch-name> # 新版切换分支命令

创建并切换分支#

Terminal window
git checkout -b <branch-name> # 创建并切换到新分支
git switch -c <branch-name> # 新版创建并切换

删除分支#

Terminal window
git branch -d <branch-name> # 删除本地分支(已合并)
git branch -D <branch-name> # 强制删除本地分支(未合并)

推送本地分支到远程#

Terminal window
git push origin <branch-name>

删除远程分支#

Terminal window
git push origin --delete <branch-name>

4. 提交代码#

添加文件到暂存区#

Terminal window
git add <file-name> # 添加单个文件
git add . # 添加当前目录的所有文件
git add *.txt # 添加所有 .txt 文件

查看当前状态#

Terminal window
git status # 查看工作区和暂存区的状态

提交代码到本地仓库#

Terminal window
git commit -m "commit message" # 提交并附带提交信息
git commit # 启动编辑器进行提交

修改最后一次提交#

Terminal window
git commit --amend # 修改上一次的提交信息或文件

5. 查看历史#

查看提交历史#

Terminal window
git log # 查看完整提交历史
git log --oneline # 简化输出(每个提交一行)
git log --graph --oneline # 显示分支图
git log -p # 查看每次提交的代码改动

查看某文件的修改历史#

Terminal window
git log -- <file-name> # 查看某个文件的历史

6. 回滚与撤销#

撤销文件修改#

Terminal window
git checkout -- <file-name> # 撤销工作区文件修改(本地未 add)

撤销暂存区文件#

Terminal window
git reset HEAD <file-name> # 将暂存区文件撤回到工作区

回滚到指定提交#

Terminal window
git reset --soft <commit-id> # 回滚到某提交,保留工作区文件和暂存区
git reset --mixed <commit-id> # 回滚到某提交,保留工作区文件,清空暂存区
git reset --hard <commit-id> # 回滚到某提交,清空工作区和暂存区

7. 同步远程仓库#

查看远程仓库#

Terminal window
git remote -v # 查看远程仓库地址

添加远程仓库#

Terminal window
git remote add origin <repository-url> # 绑定远程仓库

拉取代码#

Terminal window
git pull origin <branch-name> # 拉取远程分支代码并合并到当前分支

推送代码#

Terminal window
git push origin <branch-name> # 推送当前分支到远程仓库

8. 合并与冲突解决#

合并分支#

Terminal window
git merge <branch-name> # 将指定分支合并到当前分支

解决冲突#

  1. 打开冲突文件,手动解决冲突。

  2. 将解决冲突后的文件添加到暂存区:

    Terminal window
    git add <file-name>
  3. 提交合并:

    Terminal window
    git commit

9. 标签操作#

创建标签#

Terminal window
git tag <tag-name> # 创建轻量级标签
git tag -a <tag-name> -m "message" # 创建带注释的标签

查看标签#

Terminal window
git tag # 查看所有标签

推送标签到远程#

Terminal window
git push origin <tag-name> # 推送指定标签
git push origin --tags # 推送所有标签

删除标签#

Terminal window
git tag -d <tag-name> # 删除本地标签
git push origin --delete <tag-name> # 删除远程标签

10. Stash(存储现场)#

保存当前工作现场#

Terminal window
git stash # 保存未提交的修改
git stash save "message" # 保存并附加描述

查看所有存储的现场#

Terminal window
git stash list

恢复工作现场#

Terminal window
git stash apply # 应用最近一次存储的现场
git stash pop # 应用最近一次存储的现场并且将此次 stash 从 stash list 中 删除
git stash apply stash@{n} # 应用指定的现场

删除存储的现场#

Terminal window
git stash drop stash@{n} # 删除指定的存储
git stash clear # 清空所有存储

11. 高级操作#

比较差异#

Terminal window
git diff # 查看工作区和暂存区的差异
git diff --cached # 查看暂存区和上一次提交的差异
git diff <branch-name> # 比较当前分支和指定分支的差异
git diff <commit-id1> <commit-id2> # 比较两次提交的差异

Rebasing(变基)#

Terminal window
git rebase <branch-name> # 将当前分支的提交变基到指定分支

Cherry-pick(挑拣提交)#

Terminal window
git cherry-pick <commit-id> # 应用某次提交到当前分支

12. 清理操作#

删除未追踪的文件#

Terminal window
git clean -f # 删除未追踪的文件
git clean -fd # 删除未追踪的文件和文件夹

清理缓存#

Terminal window
git rm --cached <file-name> # 从暂存区删除文件但保留在工作区

13. 常见问题解决#

忽略某些文件#

创建 .gitignore 文件并写入需要忽略的文件或 :

Terminal window
*.log
*.pyc
node_modules/
plaintext123

修改远程仓库地址#

Terminal window
git remote set-url origin <new-url>