🚀程序员必收藏!最全Git命令手册:解决90%团队协作难题

fetch

git fetch origin: 从远程仓库(通常是 origin)获取最新的代码,但它不会自动将这些更新合并到你的当前分支

git fetch origin release-1260 :从远程仓库(origin)拉取名为 release-1260 的分支的最新更新

git fetch origin feature-1270-colleague1:feature-1270-colleague1:从远程仓库(origin)拉取 feature-1270-colleague1 分支的更新并将其同步到本地同名分支 feature-1270-colleague1,如果本地没有这个分支,则会创建它。

git fetch --all --prune:获取远程仓库信息并清理本地过时分支

merge

git merge feature-1270-colleague1:这是将本地分支 feature-1270-colleague1 的更改合并到当前分支中。

git merge origin/feature-1270-colleague1:这是将远程跟踪分支 origin/feature-1270-colleague1 的更改合并到当前分支中。

示例:合并其它分支代码至本分支

basic 复制代码
# 拉取远程分支 feature-1300
git fetch origin feature-1300

# 合并远程分支 feature-1300 到本地分支 feature-1270-fmy
git merge origin/feature-1300

git add .
git commit -m "Resolved merge conflicts between feature-1270-fmy and feature-1270-colleague1"

reset

git reset :取消 git add

git reset --soft HEAD^:撤回 git commit

git reset --soft ORIG_HEAD:撤回 git reset --soft HEAD^

git reset <你需要回到的那条记录>: 仅更新分支指针和暂存区,不改变工作区的内容,适用于撤销某些已暂存的修改或提交,但仍然保留当前的文件修改。

git reset --hard <你需要回到的那条记录>:完全重置分支指针、暂存区和工作区,丢弃所有未提交的更改,适用于彻底回滚到某个历史版本。强制推送(--force)将覆盖远程仓库的历史,因此要谨慎使用。

把新提交的代码从远程仓库删除:git reset --hard + push -f

如果你要剔除的是最后一个或几个提交,可以使用:

typescript 复制代码
git checkout release-1.3.7
git reset --hard <你想回到的版本 commit 号>
git push origin release-1.3.7 --force

stash

basic 复制代码
git add .
git stash
git stash pop
git stash pop "stash@{2}"

revert

如果该分支已经被推送到远程(比如 GitHub),并且其他人已经基于这个分支开发,修改历史会影响他们的工作! 在这种情况下建议用 revert

git revert <commit-hash>

该分支已经被推送到远程(比如 GitHub),并且其他人已经基于这个分支开发,修改历史会影响他们的工作! 在这种情况下建议用 revert 而不是改历史。

typescript 复制代码
git log --oneline

e8f9a33 (HEAD -> release-1.3.7)  Fix: final bugfix
4f3c7ab  Add: new feature X
9a7bd12  Update: code formatting  <--- 想要剔除的提交
a2d3f4e  Fix: small issue
1d2a3c4  Init: release-1.3.7
typescript 复制代码
git checkout release-1.3.7
git revert 9a7bd12

会弹出一个提交信息编辑器,默认信息是 Revert "Revert "feat: ...""。直接按 ESC然后输入 :wq保存退出即可。

rebase

如果该分支已经被推送到远程(比如 GitHub),并且其他人已经基于这个分支开发,修改历史会影响他们的工作! 如果你确定可以改历史(例如你是唯一开发者),可以用rebase

git rebase -i + drop + push -f

需要修改历史

typescript 复制代码
git checkout release-1.3.7
git rebase -i HEAD~n   # n 为你要回溯的提交数量,比如 4 或更多

pick a2d3f4e Fix: small issue
pick 9a7bd12 Update: code formatting
pick 4f3c7ab Add: new feature X
pick e8f9a33 Fix: final bugfix

你把其中 9a7bd12 那一行从 pick 改成 drop(或者直接删除那行),然后保存退出,Git 会重新构建分支历史。

typescript 复制代码
git push origin release-1.3.7 --force

delete

这两步操作完成后,release-1690 分支会被从本地和远程仓库中删除。

typescript 复制代码
// 删除本地分支
git branch -d release-1690
// 删除远程分支
git push origin --delete release-1690

remote

typescript 复制代码
git remote prune origin

清理本地仓库中那些远程分支的过时引用(即远程仓库已删除但本地仍记录的远程分支跟踪信息)。

命令 作用
git fetch --prune 或 git fetch -p 获取远程最新数据 并同时 清理无效的远程分支引用(推荐更常用)。
git remote prune origin 仅清理本地无效的远程分支引用,不获取新数据。
git remote update --prune 更新所有远程仓库并清理无效引用。

branch

typescript 复制代码
git branch -m release-1932

在本地新建分支后,还未上传到仓库,可以用该命令把该分支的名称修改为release-1932

commit

release:指的是与发布版本相关的更新或修改,通常用于标记版本发布的 commit。例如,创建一个新的发布分支或对版本号进行更新。

dep :短缩写自 dependencies,意味着与依赖项相关的修改。可以是添加、更新或移除项目依赖的 commit。

docs:与文档相关的更改,通常指更新 README 文件、API 文档、注释等内容。

chrome:通常与浏览器的特定实现、前端代码优化、浏览器兼容性等相关的修改。例如,针对 Chrome 浏览器的一些特定修复或增强。

refactor:指的是对代码结构进行重构,但不涉及新增功能或修复 bug。重构代码通常是为了提高可读性、可维护性或性能等,但不改变现有行为。

cleanup:指的是对代码的清理工作,通常是删除无用的代码、注释或简化现有代码的操作,目的是提升代码质量,减少冗余。

ci :与 持续集成 (Continuous Integration) 配置相关的更改。通常涉及修改 CI 配置文件、脚本、自动化流程等,确保构建和测试流程能够正确运行。

perf:与性能优化相关的 commit,可能是对代码进行优化以提高执行效率、减少资源消耗等。

config

设置user.name

basic 复制代码
git config user.name  // 为空
git config --global user.name "mengyufan"
git config --list // 查看所有

status

git status :查看 git add . 的文档

tag

typescript 复制代码
git tag sbt/release-1.6.3.0 
git push origin --tags

clone

typescript 复制代码
git clone -b <branch-name> <repository-url>
相关推荐
coooliang3 小时前
【鸿蒙 NEXT】V1迁移V2状态管理
java·前端·harmonyos
程序员码歌4 小时前
零代码AI编程实战-热搜从0到1技术方案
前端·ai编程·cursor
kk不中嘞4 小时前
浅谈前端框架
前端·vue.js·react.js·前端框架
服务端技术栈4 小时前
历时 1 个多月,我的第一个微信小程序「图片转 Excel」终于上线了!
前端·后端·微信小程序
一个很老的小萌新4 小时前
json 解析 [{“id“:1,“name“:“apple“},{“id“:2,“name“:“banana“}]
java·前端·json
yanlele4 小时前
前端面试第 78 期 - 2025.09.07 更新 Nginx 专题面试总结(12 道题)
前端·javascript·面试
影子信息5 小时前
el-tree 点击父节点无效,只能选中子节点
前端·javascript·vue.js
拜无忧5 小时前
完美圆角,渐变边框,兼容chrome 60,两层背景的视觉差
前端·css
徐小夕5 小时前
用Vue3写了一款协同文档编辑器,效果简直牛!
前端·javascript·vue.js