当前位置: 首页 > news >正文

git命令入门

Git 命令完整手册


🔧 基础配置(最先做)

# 设置用户名和邮箱gitconfig--globaluser.name"你的名字"gitconfig--globaluser.email"你的邮箱"# 中文文件名正常显示(不显示八进制)gitconfig--globalcore.quotepathfalse# 查看所有配置gitconfig--global--list

1️⃣ 初始化

# 方式一:全新项目初始化gitinit# 在当前目录初始化Git仓库gitinit 项目名# 新建文件夹并初始化# 方式二:关联已有远程仓库gitremoteaddorigin https://github.com/用户名/仓库名.git# 查看远程仓库地址gitremote-v# 修改远程仓库地址gitremote set-url origin https://github.com/用户名/新仓库名.git# 删除远程关联gitremote remove origin

2️⃣ 推送到远程

📌 首次推送

# 第一步:初始化gitinit# 第二步:添加所有文件gitadd.# 第三步:首次提交gitcommit-m"first commit"# 第四步:关联远程仓库gitremoteaddorigin https://github.com/用户名/仓库名.git# 第五步:推送(首次用 -u 绑定分支)gitpush-uorigin main

📌 日常更新推送

# 查看哪些文件改动了gitstatus# 添加指定文件gitadd文件名# 添加所有改动文件gitadd.# 提交(写清楚改了什么)gitcommit-m"修改说明"# 推送到远程gitpush origin main

3️⃣ 克隆与拉取更新

📌 首次克隆

# 克隆远程仓库到本地gitclone https://github.com/用户名/仓库名.git# 克隆到指定文件夹gitclone https://github.com/用户名/仓库名.git 自定义文件夹名# 克隆指定分支gitclone-b分支名 https://github.com/用户名/仓库名.git

📌 更新拉取(本地无修改)

# 直接拉取gitpull origin main

📌 更新拉取(本地有修改)⭐️

# 第一步:备份(最保险)cp-r项目目录 备份目录_$(date+%Y%m%d_%H%M%S)# 第二步:把本地修改藏起来gitstash# 第三步:拉取远程最新代码gitpull origin main# 如果第三步效果满意,不需要本地修改了:gitstash drop# 彻底删除暂存的本地修改# 如果需要合并本地修改:gitstash pop# 把本地修改拿出来合并

📌 stash 相关命令

gitstash# 暂存本地修改gitstash list# 查看所有暂存记录gitstash pop# 恢复最近一次暂存(并删除记录)gitstash apply# 恢复最近一次暂存(保留记录)gitstash drop# 删除最近一次暂存记录gitstashclear# 删除所有暂存记录

4️⃣ 分支管理

# 查看所有本地分支gitbranch# 查看所有分支(含远程)gitbranch-a# 新建分支gitbranch 分支名# 切换分支gitcheckout 分支名# 新建并切换(常用)gitcheckout-b分支名# 合并分支(把xxx合并到当前分支)gitmerge 分支名# 删除本地分支gitbranch-d分支名# 删除远程分支gitpush origin--delete分支名

5️⃣ 查看状态与历史

# 查看文件状态gitstatus# 查看提交历史gitlog# 精简版历史(好看)gitlog--oneline# 图形化历史gitlog--oneline--graph--all# 查看某个文件的改动内容gitdiff文件名# 查看暂存区和上次提交的差异gitdiff--staged

6️⃣ 撤销与回退

# 撤销工作区修改(未add)gitrestore 文件名# 撤销暂存区(已add,未commit)gitrestore--staged文件名# 回退到上一次提交(保留改动)gitreset--softHEAD~1# 回退到上一次提交(丢弃改动)⚠️危险gitreset--hardHEAD~1# 强制推送(回退后用)⚠️危险gitpush origin main--force

📊 日常工作流程总结

新项目 git init → git add . → git commit → git push -u origin main 日常更新 git add . → git commit -m "说明" → git push origin main 拉取更新(本地无改动) git pull origin main 拉取更新(本地有改动) 备份 → git stash → git pull → git stash pop(或drop) 查看状态 git status → git log --oneline

📋 命令速查表

场景命令
初始化git init
关联远程git remote add origin URL
添加文件git add .
提交git commit -m "说明"
首次推送git push -u origin main
日常推送git push origin main
克隆git clone URL
拉取git pull origin main
暂存修改git stash
恢复暂存git stash pop
删除暂存git stash drop
查看状态git status
查看历史git log --oneline
查看分支git branch -a

注:关于分支、stash、rebase等高级操作后续继续

Git Branch 常用命令总结


一、查看分支

# 查看本地所有分支gitbranch# 查看远程所有分支gitbranch-r# 查看本地 + 远程所有分支gitbranch-a# 查看每个分支最后一次提交信息gitbranch-v# 查看已合并到当前分支的分支gitbranch--merged# 查看未合并到当前分支的分支gitbranch --no-merged

二、创建分支

# 创建新分支(不切换)gitbranch<branch-name># 创建并立即切换到新分支gitcheckout-b<branch-name># 基于某个 commit / tag 创建并切换gitcheckout-b<branch-name><commit-id># 新版写法(Git 2.23+)gitswitch-c<branch-name>

三、切换分支

# 切换到已有分支gitcheckout<branch-name># 新版写法(Git 2.23+)gitswitch<branch-name># 切换到上一个分支(类似 cd -)gitcheckout -gitswitch -

四、重命名分支

# 重命名当前分支gitbranch-m<new-name># 重命名指定分支gitbranch-m<old-name><new-name># 重命名后同步到远程gitpush origin--delete<old-name>gitpush origin<new-name>

五、删除分支

# 删除本地分支(已合并才能删)gitbranch-d<branch-name># 强制删除本地分支(未合并也能删)gitbranch-D<branch-name># 删除远程分支gitpush origin--delete<branch-name># 清理本地已失效的远程追踪分支gitremote prune origin# 查看哪些远程追踪分支已失效gitremote prune origin --dry-run

六、合并分支

# 将指定分支合并到当前分支gitmerge<branch-name># 禁用 fast-forward,保留合并记录gitmerge --no-ff<branch-name># 合并但不提交(暂存到工作区)gitmerge --no-commit<branch-name># 放弃本次合并(冲突时回退)gitmerge--abort

七、变基 Rebase

# 将当前分支变基到目标分支gitrebase<branch-name># 交互式变基(整理提交历史)gitrebase-iHEAD~<N># N 为最近几次提交# 变基时发生冲突,解决后继续gitrebase--continue# 放弃变基,回到变基前状态gitrebase--abort

八、追踪远程分支

# 拉取远程分支并在本地创建追踪分支gitcheckout-b<branch-name>origin/<branch-name># 新版写法gitswitch-c<branch-name>--trackorigin/<branch-name># 设置已有本地分支追踪远程分支gitbranch-uorigin/<branch-name>gitbranch --set-upstream-to=origin/<branch-name># 查看本地和远程的追踪关系gitbranch-vv# 推送并建立追踪关系gitpush-uorigin<branch-name>

九、cherry-pick(摘取提交)

# 将某个 commit 应用到当前分支gitcherry-pick<commit-id># 摘取多个 commitgitcherry-pick<commit-id1><commit-id2># 摘取一段连续 commit(不含起点)gitcherry-pick<start-id>..<end-id># 摘取一段连续 commit(含起点)gitcherry-pick<start-id>^..<end-id># 冲突后继续gitcherry-pick--continue# 放弃 cherry-pickgitcherry-pick--abort

十、常用场景速查

场景命令
新建并切换分支git checkout -b <name>
从远程拉一个新分支到本地git checkout -b <name> origin/<name>
把 dev 合并到 main切到 main →git merge dev
删除已合并的本地分支git branch -d <name>
强制删除未合并分支git branch -D <name>
删除远程分支git push origin --delete <name>
整理最近 3 次提交git rebase -i HEAD~3
推送并追踪远程git push -u origin <name>
查看所有分支追踪关系git branch -vv
清理失效远程分支git remote prune origin

📌 建议:

  • 功能开发始终在新分支上进行,不要直接在main/master上提交
  • 合并前先git fetch更新远程信息
  • --no-ff合并保留完整历史,方便回溯

注:本博文为个人自学记录留存
推荐技术爬爬虾讲解的这部分内容很清晰
附一个截图

http://www.jsqmd.com/news/860207/

相关文章:

  • 2026 年 Haskell 基金会大变革:执行董事卸任、组织重组、董事会人员调整!
  • 标杆案例解读:富士康市值破万亿背后:代工帝国的数字化重生!
  • C++ map详解
  • 告别命令行恐惧!用pytest.ini配置文件,一键搞定Pytest测试运行
  • 想找闸门工厂?这几家值得你深入了解,速来一看!
  • 基于 PyTorch 的 TransU-Net 模型进行不同城市建筑物的精准提取 来继续遥感图像语义分割
  • 前端高频难题——防抖与节流的精准实现(避坑版)
  • 数字孪生完整教程(开发工具 + 三方对接全流程)
  • Aube:下一代 Node.js 包管理器,性能远超 pnpm
  • 书匠策AI官网www.shujiangce.com:论文降重降AIGC,原来可以这么丝滑?
  • STM32F103C8T6最小系统板避坑指南:从ST-LINK连接到Keil5乱码,新手常踩的5个坑
  • 多智能体系统的最大难题:不是推理,而是协同
  • 告别乱码!手把手教你为SquareLine Studio 1.3.1添加中文字体库(附常用字库文件)
  • 10 万行 Rust 代码开发实测封神!AI 应用经验大揭秘
  • 【AI入门知识点】Agent 是什么?为什么说它是 AI 的下一阶段?
  • 开源|一款零服务器代码知识图谱引擎,支持多语言解析、Graph RAG 问答、AI 代理集成的代码分析平台
  • DB2里LISTAGG拼接超长数据报错?试试xmlagg+xml2clob这个组合拳(附完整SQL示例)
  • 书匠策AI到底能不能帮你搞定毕业论文?一个写作博主的实测级科普
  • 广东抖店商家与带货达人:短视频运营培训机构测评
  • 智慧树自动刷课插件:三步实现在线学习效率倍增的终极方案
  • 艾络迅 × 荣耀:联合推出Meteer AI跳舞机器人玩具,智能科技重新定义儿童陪伴
  • 从“念稿子”到“讲故事”:学术答辩PPT的范式转移
  • 保姆级避坑指南:在Ubuntu 22.04虚拟机里搞定ESP-IDF环境(附常见错误解决)
  • 长期使用后回顾聚合平台在服务稳定性上的实际表现
  • 对比直接使用官方 API 体验 Taotoken 在多模型选型上的便利
  • Agent技能调用LLM API的7种核心形式
  • 水下叶轮脉动压力测试:Kulite压力传感器强在哪?安装门槛怎么破?
  • 照着用就行:高效论文写作全流程AI论文网站推荐(2026 最新)
  • vivo统一AI Agent能力,Chat模式落地打造可“拼”底座助力业务演进!
  • 在 GPT 里[读文档]这件事,我测了 5 个 MCP 工具,为什么复杂 OCR 场景最终会走向 MinerU