PhysChen.com
主页 日志
物理
科普 理论研究
教学
IB 课程
编程
开发 笔记
摄影
Shenzhen Portrait Cats Others Wuhan Japan
关于
主页
日志
物理
科普 理论研究
教学
IB 课程
编程
开发 笔记
摄影
Shenzhen Portrait Cats Others Wuhan Japan
关于
文章目录
    Git 常用命令速查 PhysChen 物理实验室

    文章信息

    • 标题: Git 常用命令速查
    • 发布时间: 2026 年 2 月 1 日
    • 来源: https://physchen.com/zh-Hans/programming/notes/Git-Battle-Manual-for-Independent-Developers/
    • 摘要: Git 仓库初始化、日常提交、分支、标签发布、撤销与冲突处理的命令参考。

    目录

      Git 常用命令速查

      2026 年 2 月 1 日 · 英文版
      • git
      • workflow

      本文整理个人项目开发与 CI 发布中常用的 Git 命令。以下命令默认在当前仓库根目录执行;远程名称为 origin,主分支为 main。

      1. 仓库与远程

      1.1 克隆与初始化

      git clone git@github.com:user/repo.git
      cd repo
      
      # 新建本地仓库
      git init
      git remote add origin git@github.com:user/repo.git

      1.2 查看远程

      git remote -v
      git remote show origin

      1.3 远程地址

      SSH 格式:git@github.com:user/repo.git

      HTTPS 格式:https://github.com/user/repo.git

      切换方式:

      git remote set-url origin git@github.com:user/repo.git
      git remote set-url origin https://github.com/user/repo.git

      SSH 连接超时时,可在 ~/.ssh/config 中为 github.com 配置代理;或改用 HTTPS 地址。

      2. 日常提交

      2.1 基本流程

      git status                  # 查看工作区与暂存区状态
      git diff                    # 未暂存的改动
      git diff --staged           # 已暂存、未提交的改动
      git add <file>              # 暂存指定文件
      git add .                   # 暂存当前目录全部改动
      git commit -m "message"     # 提交
      git log --oneline -10       # 最近 10 条提交

      2.2 提交信息约定(可选)

      许多项目采用前缀区分改动类型,例如:

      前缀含义
      feat:新功能
      fix:缺陷修复
      chore:构建、配置、依赖等杂项
      docs:文档

      Git 不强制此格式;团队有规范时按规范填写。

      2.3 拉取与推送

      git fetch origin            # 获取远程更新,不合并
      git pull origin main        # fetch + merge 到当前分支
      git push origin main        # 推送当前分支到远程
      git push -u origin main     # 首次推送并设置上游分支

      3. 分支

      3.1 创建与切换

      git branch                  # 列出本地分支
      git branch -a               # 列出本地与远程分支
      git switch -c feat/dev      # 创建并切换到新分支
      git switch main             # 切换到已有分支

      等效写法(旧版 Git 通用):

      git checkout -b feat/dev
      git checkout main

      3.2 合并与删除

      git switch main
      git merge feat/dev          # 将 feat/dev 合并进当前分支
      git branch -d feat/dev      # 删除已合并的本地分支
      git push origin --delete feat/dev   # 删除远程分支

      git branch -d 在分支未合并时会拒绝删除;强制删除使用 git branch -D。

      4. 标签与发布

      部分 CI 配置以推送 tag 作为构建或发布的触发条件。tag 名通常与 package.json、tauri.conf.json 等文件中的版本号一致。

      4.1 创建并推送

      git tag v0.1.0                      # 在当前提交打轻量标签
      git tag -a v0.1.0 -m "release 0.1.0"  # 附注标签
      git push origin v0.1.0

      查看标签:

      git tag
      git show v0.1.0

      4.2 删除并重新打 tag

      同一版本号需要重新触发 CI 时,须先删除本地与远程标签,再重新创建:

      git tag -d v0.1.0
      git push --delete origin v0.1.0
      git tag v0.1.0
      git push origin v0.1.0

      若 GitHub Release 已关联该 tag,需先在网页端删除对应 Release,再执行上述命令。

      5. 修改与撤销

      5.1 修改上一次提交

      将新改动并入最近一次提交(提交哈希会改变):

      git add .
      git commit --amend --no-edit        # 保留原 message
      git commit --amend -m "new message" # 同时修改 message

      已推送到远程的提交执行 --amend 后需要 git push --force-with-lease;多人协作分支上应谨慎使用。

      5.2 reset 三种模式

      git reset --soft HEAD~1    # 回退提交,改动保留在暂存区
      git reset --mixed HEAD~1   # 回退提交,改动保留在工作区(默认)
      git reset --hard HEAD~1    # 回退提交,丢弃工作区与暂存区改动
      模式提交记录暂存区工作区
      --soft回退保留保留
      --mixed回退清空保留
      --hard回退清空清空

      5.3 丢弃未提交的改动

      git restore <file>         # 恢复单个文件到 HEAD 状态
      git restore .              # 恢复全部已跟踪文件
      git clean -fd              # 删除未跟踪的文件与目录

      等效写法:

      git checkout -- <file>
      git reset --hard

      reset --hard 与 clean -fd 不可恢复未提交的改动。

      6. 暂存(stash)

      将当前工作区改动临时保存,以便切换分支或拉取代码:

      git stash                  # 保存改动,工作区恢复干净
      git stash list             # 查看 stash 列表
      git stash pop              # 应用最近一次 stash 并删除记录
      git stash apply            # 应用但不删除记录
      git stash drop             # 删除指定 stash

      stash 仅保存已跟踪文件的改动;未跟踪的新文件默认不纳入,需加 -u:

      git stash -u

      7. .gitignore

      7.1 规则不生效

      文件在写入 .gitignore 之前已被 git add 过时,Git 会继续跟踪。处理方式:

      git rm -r --cached .
      git add .
      git commit -m "chore: apply gitignore"

      git rm -r --cached 只从索引中移除,不删除磁盘文件。

      7.2 常见忽略项

      node_modules/
      dist/
      .env
      *.jks
      .DS_Store

      8. 合并冲突

      git merge 或 git pull 出现冲突时,Git 在文件中插入标记:

      <<<<<<< HEAD
      当前分支的内容
      =======
      合并进来的内容
      >>>>>>> branch-name

      处理步骤:

      1. 打开冲突文件,定位 <<<<<<<。
      2. 保留需要的代码,删除标记行与不需要的段落。
      3. git add <file> 标记为已解决。
      4. git commit 完成合并。

      放弃本次合并:

      git merge --abort

      9. 敏感文件与历史

      .env、密钥文件(如 .jks)、私钥等不应提交到仓库。git rm 加提交只能从当前版本树中移除,历史提交中仍可能存在。

      已从远程推送的敏感文件,需使用 git filter-repo 或 BFG Repo-Cleaner 等工具重写历史,并轮换已泄露的凭据。

      仅本地、尚未推送的误提交,可用 git reset 回退后重新提交。

      10. 常见问题

      git push 被拒绝(non-fast-forward)

      远程分支含有本地没有的提交。先 git pull(或 git pull --rebase)合并远程改动,再 push。

      detached HEAD

      当前不在任何分支上,而是直接指向某个提交。切回分支:

      git switch main

      查看某次提交改了什么

      git show <commit-hash>
      git diff <commit-hash>^ <commit-hash>

      查看某文件的历史

      git log --oneline -- path/to/file
      上一篇 Astro + GitHub Actions 自动化部署到个人服务器 2026 年 4 月 18 日 下一篇
      Xiaohongshu Streamline Icon: https://streamlinehq.com Xiaohongshu
      闽ICP备2026003335号
      © 2026 CHEN Hua All rights reserved
      © Hua Chen / PhysChen.com