🚀程序员必收藏!最全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>
相关推荐
吴声子夜歌12 分钟前
ES6——Iterator和for...of循环详解
前端·javascript·es6
小李子呢021116 分钟前
前端八股3---ref和reactive
开发语言·前端·javascript
落魄江湖行20 分钟前
基础篇三 Nuxt4 组件进阶:插槽与事件传递
前端·nuxt4
kerli21 分钟前
Compose 组件:LazyColumn 核心参数与 key/contentType 详解
android·前端
好运的阿财22 分钟前
“锟斤拷”问题——程序中用powershell执行命令出现中文乱码的解决办法
linux·前端·人工智能·机器学习·架构·编辑器·vim
踩着两条虫33 分钟前
VTJ.PRO AI + 低代码实战:接入高德地图
前端·vue.js·ai编程
绝世唐门三哥34 分钟前
React性能优化:memo、useMemo和useCallback全解析
前端·react.js·memo
兔子零102436 分钟前
Claude Code 都把宠物养进终端了,我做了一个真正能长期玩的中文宠物游戏
前端·游戏·游戏开发
xiaotao13136 分钟前
Vite 与 Webpack 开发/打包时环境变量对比
前端·vue.js·webpack
摆烂工程师41 分钟前
教你如何查询 Codex 最新额度是多少,以及 ChatGPT Pro、Plus、Business 最新额度变化
前端·后端·ai编程