Git 常用命令集与实际使用 Demo
Git 常用命令集与实际使用 Demo
一、初始化 & 配置
| 命令 | 说明 | Demo |
|---|---|---|
| git init | 在当前目录初始化本地 Git 仓库,生成 .git/ 文件夹 | mkdir newProject && cd newProject git init |
| git config --global user.name “xxx” | 设置全局用户名 | git config --global user.name “Alice” |
| git config --global user.email “xxx@xxx.com” | 设置全局用户邮箱 | git config --global user.email “alice@example.com” |
| git config --global color.ui true | 为命令行输出自动着色,提高可读性 | git config --global color.ui true |
| git config --global --unset http.proxy | 移除全局 HTTP 代理配置 | git config --global --unset http.proxy |
1. 说明
- 若要对单个仓库而不是全局生效,可在该项目目录下去掉 --global 选项。
- 可用 git config --list 查看当前所有 Git 配置项。
二、仓库克隆 & 远程关联
| 命令 | 说明 | Demo |
|---|---|---|
| git clone | 克隆远程仓库到本地 | git clone git@github.com:username/repo.git |
| git remote add origin | 将本地仓库与远程 建立关联,通常命名为 origin | git remote add origin git@github.com:username/repo.git |
| git remote -v | 查看当前仓库的远程地址配置 | git remote -v |
| git fetch <remote_repo_name> | 从远程仓库获取更新,但不与本地分支合并 | git fetch origin |
| git pull <remote_repo_name> <branch_name> | 拉取远程 <branch_name> 并合并到当前分支 | git pull origin master |
| git push [–set-upstream] <remote_repo_name> <branch_name> | 将本地分支推送到远程分支(首次推送可用 -u/–set-upstream 绑定默认远程追踪) | git push -u origin dev |
| git push -f origin master | 强制推送到远程仓库,覆盖远程已有提交,需谨慎 | git push -f origin master |
| git push origin :<branch_name> | 删除远程分支 <branch_name> | git push origin :dev-feature |
| git init + git remote add … + git push -u origin master | 从零开始创建仓库并推送到远程 | git init git remote add origin git@github.com:username/repo.git git push -u origin master |
三、提交、暂存 & 推送
| 命令 | 说明 | Demo |
|---|---|---|
| git add / git add . | 将指定文件或当前目录下所有修改放入暂存区(Stage) | git add index.html git add . |
| git commit -m “commit message” | 提交暂存区到本地仓库 | git commit -m “Add new feature” |
| git commit --amend -m “new message” | 修改上一次提交,常用于补充或修正 | git commit --amend -m “Adjust last commit message” |
| git commit -am “message” | 将已跟踪过的文件直接从工作区到提交;相当于 git add + git commit 一步完成 | git commit -am “Fix bug and commit” |
| git status | 查看当前工作区和暂存区的状态 | git status |
| git push | 将本地分支提交推送到远程 | git push origin feature-login |
| git push -u origin master | 首次推送并将 master 绑定到远程追踪分支 | git push -u origin master |
| git push -f origin master | 强制推送覆盖远程提交,谨慎使用 | git push -f origin master |
四、分支操作
1. 创建 & 切换 & 查看
| 命令 | 说明 | Demo |
|---|---|---|
| git branch <branch_name> | 创建新分支,但不切换到该分支 | git branch hotfix-login |
| git checkout <branch_name> | 切换到已有分支 | git checkout master |
| git checkout -b <branch_name> | 新建并切换到 <branch_name> 分支 | git checkout -b feature-cart |
| git branch -a | 查看所有分支(包含本地和远程) | git branch -a |
| git branch -r | 只看远程分支 | git branch -r |
| git branch -v | 查看各分支的最后一次提交信息 | git branch -v |
| git branch --merged / --no-merged | 查看哪些分支已合并 / 未合并到当前分支 | git branch --merged git branch --no-merged |
| git checkout -b newBrach origin/master | 基于远程 origin/master 创建并切换到 newBrach | git checkout -b release-1.0 origin/master |
2. 删除 & 重命名
| 命令 | 说明 | Demo |
|---|---|---|
| git branch -d <branch_name> | 删除本地分支,只能删除已合并到其他分支或 HEAD 的分支 | git branch -d hotfix-login |
| git branch -D <branch_name> | 强制删除本地分支,即使未合并 | git branch -D feature-experiment |
| git push origin :<branch_name> | 删除远程分支 | git push origin :feature-old |
| git branch -m | 本地分支改名 | git branch -m master master_backup |
| git checkout -b sf origin/serverfix | 在本地创建并切换到分支 sf,并跟踪远程 origin/serverfix | git checkout -b sf origin/serverfix |
| git checkout --track origin/serverfix | 简写形式,让本地分支自动追踪远程 serverfix | git checkout --track origin/serverfix |
3. 常见工作流程示例
3.1. 示例:
- 在自己工作分支(如 mybranch)进行开发
- 突然有新需求,需要先切到 product 分支:
git checkout product
- 为新需求新建分支 issueXXXX 并切换到该分支,完成开发测试:
git checkout -b issueXXXX
# ... coding ...
git commit -am "Fix issueXXXX"
- 切回生产环境分支 product,把 issueXXXX 合并进来:
git checkout product
git merge issueXXXX
# 解决冲突后 git add 冲突文件 && git commit
git push origin product
- 切回 mybranch 继续原工作:
git checkout mybranch
五、合并 (Merge)、Rebase、Cherry-pick
1. Merge
| 命令 | 说明 | Demo |
|---|---|---|
| git merge | 将 分支合并到当前分支,产生合并提交 (若有冲突需手动解决) | git checkout master git merge dev |
| git merge origin/master | 合并远程 master 分支到当前分支 | git checkout dev git merge origin/master |
冲突解决流程:
- Git 提示冲突,编辑冲突文件并手动修正,保留正确代码。
- git add 将已解决冲突的文件加入暂存区。
- git commit 提交合并结果。
2. Rebase
| 命令 | 说明 | Demo |
|---|---|---|
| git rebase | 将当前分支基于 最新提交进行重放,形成线性历史 | git checkout feature git rebase master |
| git rebase -i | 交互式 rebase,可修改/合并/删除提交 | git checkout feature git rebase -i master |
| git rebase --continue | 解决冲突后,继续 rebase | git add . git rebase --continue |
| git rebase --abort | 放弃当前 rebase 操作,回到开始 rebase 之前的状态 | git rebase --abort |
注意:Rebase 会重写提交哈希,若已推送到公共仓库请谨慎使用。
3. Cherry-pick
| 命令 | 说明 | Demo |
|---|---|---|
| git cherry-pick | 将指定的 提交复制到当前分支 (新提交哈希) | git checkout master git cherry-pick abc123 |
| git cherry-pick | 一次性复制多个提交 | git cherry-pick 123abc 456def |
| git cherry-pick A…B | 复制从 A(不含)到 B(含)的所有提交 | git cherry-pick v1.0…v2.0 |
| git cherry-pick --continue / --abort / --quit | 在出现冲突时,–continue 继续 / --abort 放弃 / --quit 退出但保留已修改内容 | git cherry-pick --continue git cherry-pick --abort |
六、回退、重置、撤销
| 命令 | 说明 | Demo |
|---|---|---|
| git checkout | 暂时切换到指定版本(处于“游离 HEAD”状态),并未移动任何分支指针 | git checkout 123abc # HEAD is now at commit 123abc |
| git reset --hard | 将当前分支 HEAD 移动到 ,工作区也会回退到对应版本 | git reset --hard 123abc |
| git revert | 生成一次新的提交,用来“撤销” 对应的改动,但不会抹掉历史 | git revert abc123 git commit -m “Revert commit abc123” |
| git push -f origin master | 强制推送到远程仓库,覆盖远程历史,需谨慎 | git push -f origin master # Overwrites remote master’s history |
七、标签管理
| 命令 | 说明 | Demo |
|---|---|---|
| git tag | 查看当前仓库已有的所有标签 | git tag |
| git tag -a <tag_name> -m “message” | 新建带说明的标签(注释标签) | git tag -a v1.0 -m “Release v1.0” |
| git show <tag_name> | 查看标签信息对应的提交详情 | git show v1.0 |
| git push origin <tag_name> | 推送指定标签到远程 | git push origin v1.0 |
| git push --tags | 一次性推送本地所有标签 | git push --tags |
| git tag -d <tag_name> | 删除本地标签 | git tag -d v1.0 |
| git push origin :refs/tags/<tag_name> | 删除远程标签 | git push origin :refs/tags/v1.0 |
注意:不带 -a 或 -m 的标签为轻量标签,通常推荐使用带注释的标签,以便后续追溯信息。
八、查看日志 & 差异比较
| 命令 | 说明 | Demo |
|---|---|---|
| git log | 查看提交日志 | git log |
| git log -n / --stat / --pretty / --graph | 多种形式查看日志(限制条数 / 显示变动文件 / 格式化输出 / 图示) | git log -5 --stat git log --pretty=oneline --graph |
| git show | 查看指定提交的详细内容 | git show 123abc |
| git diff | 显示工作区与暂存区差异 | git diff |
| git diff --cached | 显示暂存区与上次提交之间的差异 | git diff --cached |
| git diff origin/master…master | 比较远程 master 与本地 master 之间的差异 | git diff origin/master…master |
| git reflog | 显示所有引用更新记录(包括回退、分离 HEAD 等操作) | git reflog |
| git show-branch --all | 图示所有分支历史 | git show-branch --all |
九、存储(Stash)
| 命令 | 说明 | Demo |
|---|---|---|
| git stash | 将当前未提交的修改暂存起来,使工作区回到干净状态 | git stash |
| git stash list | 查看所有 stash 记录 | git stash list |
| git stash show -p stash@{0} | 查看某条 stash 详情 | git stash show -p stash@{0} |
| git stash apply stash@{0} | 应用某条 stash 到当前工作区 | git stash apply stash@{0} |
| git stash pop | 应用最新一次 stash 并删除该 stash 记录 | git stash pop |
十、其他常用命令
| 命令 | 说明 | Demo |
|---|---|---|
| git mv <old_name> <new_name> | 重命名文件,并将该改动记录到暂存区 | git mv README.md README_NEW.md |
| git ls-files | 列出本地索引(index)中包含的文件 | git ls-files |
| git whatchanged | 显示提交历史对应的文件修改 | git whatchanged |
| git grep “” | 在仓库文件中搜索符合 的内容 | git grep “delete from” |
| git gc | 进行垃圾回收,清理无引用的对象 | git gc |
| git fsck | 验证数据库与树的完整性 | git fsck |
| git format-patch | 将两个分支之间的差异导出为 patch 文件 | git format-patch master |
| git push <local_branch>:<remote_branch> | 将本地 <local_branch> 推送到远程指定 <remote_branch> | git push origin serverfix:awesomebranch |
| git revert dfb02e6e4f2f7b5 | 撤销指定提交(会生成一次新提交) | git revert dfb02e6e4f2f7b5 |
| git rev-parse v2.0 | 显示某个 ref (如 tag) 对应的 SHA1 值 | git rev-parse v2.0 |
十一、总结
- 初始化 & 配置:开始使用前务必设置好用户名、邮箱等。
- 克隆 & 远程:明确远程仓库地址和分支跟踪关系,方便后续推送、拉取。
- 分支管理:是 Git 协作核心;快速创建、切换、删除分支,基于远程分支做追踪。
- 合并 (Merge) / Rebase / Cherry-pick:三种常见“整合”方式,需要理解各自的差异和适用场景。
- 回退 / 重置 / 撤销:出错时可通过 reset, revert 等命令修正。强制推送需非常谨慎。
- 查看历史 & 比较差异:log, show, diff, reflog 等命令可帮助排查问题与回溯变动。
- 标签 & Stash:标签用于标记关键版本,stash 用于暂存工作进度,提升开发便利性。
相关文章:
Git 常用命令集与实际使用 Demo
Git 常用命令集与实际使用 Demo 一、初始化 & 配置 命令说明Demogit init在当前目录初始化本地 Git 仓库,生成 .git/ 文件夹mkdir newProject && cd newProject git initgit config --global user.name “xxx”设置全局用户名git config --global use…...
KaiwuDB:面向AIoT场景的多模融合数据库,赋能企业数字化转型
引言 在万物互联的AIoT时代,企业面临着海量时序数据处理、多模数据融合和实时分析等挑战。KaiwuDB应运而生,作为一款面向AIoT场景的分布式、多模融合、支持原生AI的数据库产品,为企业提供了一站式数据管理解决方案。 产品概述 KaiwuDB是一…...
STM32 vs ESP32:如何选择最适合你的单片机?
引言 在嵌入式开发中,STM32 和 ESP32 是两种最热门的微控制器方案。但许多开发者面对项目选型时仍会感到困惑:到底是选择功能强大的 STM32,还是集成无线的 ESP32? 本文将通过 硬件资源、开发场景、成本分析 等多维度对比…...
100M/1000M 以太网静电浪涌防护方案
方案简介 以太网是一种生产较早且广泛应用的局域网通讯方式,同时也是一种协议,其核 心在于实现区域内(如办公室、学校等)的网络互联。根据数据传输速度的不同,以 太网大致可以划分为几个等级:标准以太网…...
使用ADB工具分析Android应用崩溃原因:以闪动校园为例
使用adb工具分析模拟器或手机里app出错原因以闪动校园为例 使用ADB工具分析Android应用崩溃原因:以闪动校园为例 前言 应用崩溃是移动开发中常见的问题,尤其在复杂的Android生态系统中,找出崩溃原因可能十分棘手。本文将以流行的校园应用&q…...
C语言中while的相关题目
一、题目引入 以下程序中,while循环的循环次数是多少次? 二、代码分析 首先要明确的一点 while循环是当循环条件为真 就会一直循环 不会停止 while中i是小于10的 说明i可以取到0 1 2 3 4 5 6 7 8 9 进入第一个if判断i小于1为真时执行continue i0是为真的 执行continue 后…...
关于使用 nuitka进行构建python应用的一些配置,以及github action自动构建;
1. 通用配置 # 设置输出目录和文件名output_dir "dist"app_name "CursorAutoFree"# 基础命令行选项base_options ["--follow-imports", # 跟踪导入"--enable-plugintk-inter", # 启用 Tkinter 支持"--include-packagecusto…...
[Dify] 基于明道云实现金融业务中的Confirmation生成功能
在金融业务的日常流程中,交易记录的处理不仅涉及数据录入、流程审批,更重要的是其最终输出形式——交易确认函(Confirmation)。本文将介绍如何通过明道云的打印模板功能,快速、准确地生成符合业务需求的交易Confirmation,提升工作效率与合规性。 为什么需要Confirmation?…...
「Unity3D」图片导入选项取消Read/Write,就无法正确显示导入大小,以及Addressable打包无法正确显示的问题
如果在Edit -> Project Settings -> Editor中的“Load texture data on demand”勾选,就会让图片导入设置中,不勾选Read/Write,就无法正确显示纹理的大小数字。 更进一步的问题是,使用Addressable打包的时候, 如…...
使用Java截取MP4文件图片的技术指南
在多媒体处理中,从视频文件中截取图片是一个常见的需求。本文将详细介绍如何使用Java结合FFmpeg实现从MP4文件中截取图片的功能。我们将通过几种不同的方法来实现这一目标,包括直接调用FFmpeg命令行工具、使用JavaCV库以及使用JAVE库。 环境准备 在开始…...
在C盘新建文本文档
设定 C: 的 NTFS 文件夹权限为 Users 或 Domain Users 具有写入权限; 1. 选中C盘 2. 点右键选中属性(properties) 3. 选“安全”(Security) Tab 4. Users 5. “编辑”(Edit) 6. Full Control …...
Xcode为不同环境配置不同的环境变量
一般有三种方式: 一、通过多Target 二、通过scheme,也就是多configurations 三、通过.xcconfig文件 先来看第二种方式:通过scheme,也就是多configurations,包括自定义User-settings 第一步:增加configurations,Xcode默认为我们生成了…...
阿里通义实验室发布图片数字人项目LAM,实现高保真重建
简介 LAM项目结合了3D Gaussian Splatting(高斯点云渲染)和大规模预训练模型的优势,解决了传统头部重建方法效率低、依赖多数据的痛点。其背景源于AI生成内容(AIGC)领域对实时、高保真3D头像生成的需求,尤其…...
面试算法高频05-bfs-dfs
dfs bfs 深度优先搜索(DFS)和广度优先搜索(BFS)是图和树遍历中的重要算法,二者在实现方式和应用场景上存在明显差异。 定义与概念:DFS在遍历树或图时,以深度优先,从起始节点出发,尽可能深入地探索分支,直至无法继续,再回溯;BFS则按层次逐层遍历,从起始节点开始,…...
镜像端口及观察端口的配置
配好路由器的各个接口的IP PC1ping PC3的IP,在路由器中抓2/0/0端口的包,可观察到无结果 输入observe-port interface g 2/0/0 命令配置观察端口 输入mirror to observe-port both命令 (其中both表示接收来去的数据包,inboun…...
STM32——I2C通讯(软件模拟)
I2C概念 I2C:Inter-Integrated Circuit(内部集成电路) Philps公司80年代初期开发的,引脚少,硬件实现简单,可扩展性广泛地使用在系统内多个集成电路(IC)间的低速通讯 简单的双向两线制总线协议…...
JetBrains Terminal 又发布新架构,Android Studio 将再次迎来新终端
不到一年的时间,JetBrains 又要对 Terminal 「大刀阔斧」,本次发布的新终端是重构后的全新的架构,而上一次终端大调整还是去年 8 月的 v2024.2 版本,并且在「Android Studio Ladybug | 2024.2.1」也被引入。 不知道你们用不用内置…...
论文:Generalized Category Discovery with Large Language Models in the Loop
论文下载地址:Generalized Category Discovery with Large Language Models in the Loop - ACL Anthology 1、研究背景 尽管现代机器学习系统在许多任务上取得了优异的性能,绝大多数都遵循封闭世界的设置,假设训练和测试数据来自同一组预定义…...
第十六届蓝桥杯 省赛C/C++ 大学B组
编程题目现在在洛谷上都可以提交了。 未完待续,写不动了。 C11 编译命令 g A.cpp -o A -Wall -lm -stdc11A. 移动距离 本题总分:5 分 问题描述 小明初始在二维平面的原点,他想前往坐标 ( 233 , 666 ) (233, 666) (233,666)。在移动过程…...
从输入URL到页面渲染:浏览器请求的完整旅程解析
🌐 从输入URL到页面渲染:浏览器请求的完整旅程解析 #网络协议 #浏览器原理 #性能优化 #Web开发 一、概览:一次请求的9大关键阶段 1. 用户输入URL → 2. DNS解析 → 3. 建立TCP连接 → 4. 发送HTTP请求 5. 服务器处理 → 6. 接收响应 → 7…...
【计网】网络交换技术之分组交换(复习自用,重要1)
复习自用的,处理得比较草率,复习的同学或者想看基础的同学可以看看,大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记: 电路交换 报文交换 一、分组交换的定义 1.定义 分组交换&#x…...
6.2 GitHub API接口设计实战:突破限流+智能缓存实现10K+仓库同步
GitHub Sentinel 定期更新 API 接口设计 关键词:GitHub API 集成、异步爬虫开发、RESTful 接口设计、请求限流策略、数据增量更新 1. 接口架构设计原则 采用 分层隔离架构 实现数据采集与业务逻辑解耦: #mermaid-svg-WihvC78J0F5oGDbs {font-family:"trebuchet ms&quo…...
考研单词笔记 2025.04.13
alleviate v减轻,缓解 alleviation n减轻,缓解 blunt a钝的,不锋利的,坦率的,直截了当的v使减弱,使变钝 dampen v抑制,减弱,使潮湿 dim v减弱,淡化,变昏暗…...
解密CHASE-SQL和XiYan-SQL多智能体AI如何最终实现TEXT2SQL的突破
想象一个世界,无论技术背景如何,任何人都能轻松查询海量数据库、挖掘深层洞察。比如:“我想知道安徽地区最畅销电子产品的第三季度销售额?”——只需一句话。“去年营销支出与客户获取成本之间的相关性如何?”——像聊天一样输入问题。这就是Text-to-SQL的承诺:将人类语言…...
思考力提升的黄金标准:广度、深度与速度的深度剖析
文章目录 引言一、广度的拓展:构建多元知识网络1.1 定义与重要性1.2 IT技术实例与提升策略小结:构建多元知识网络,提升IT领域思考力广度 二、深度的挖掘:追求知识的精髓2.1 定义与重要性2.2 IT技术实例与提升策略小结:…...
web自动化:下拉选择框、弹出框、滚动条的操作
web自动化:下拉选择框、弹出框、滚动条的操作 一、下拉选择框 1、导包 from selenium.webdriver.support.select inport Select 2、实例化对象 Select(element) 3、常用方法 通过option索引来定位,从0开始:select_by_index(index)通过…...
数字人:打破次元壁,从娱乐舞台迈向教育新课堂(4/10)
摘要:数字人正从娱乐领域的璀璨明星跨界到教育领域的智慧导师,展现出无限潜力。从虚拟偶像、影视游戏到直播短视频,数字人在娱乐产业中大放异彩,创造巨大商业价值。在教育领域,数字人助力个性化学习、互动课堂和虚拟实…...
互联网三高-数据库高并发之分库分表ShardingJDBC
1 ShardingJDBC介绍 1.1 常见概念术语 ① 数据节点Node:数据分片的最小单元,由数据源名称和数据表组成 如:ds0.product_order_0 ② 真实表:再分片的数据库中真实存在的物理表 如:product_order_0 ③ 逻辑表:…...
【NLP】 18. Tokenlisation 分词 BPE, WordPiece, Unigram/SentencePiece
1. 翻译系统性能评价方法 在机器翻译系统性能评估中,通常既有人工评价也有自动评价方法: 1.1 人工评价 人工评价主要关注以下几点: 流利度(Fluency): 判断翻译结果是否符合目标语言的语法和习惯。充分性…...
Android游戏逆向工程全面指南
文章目录 第一部分:基础概念与环境搭建1.1 游戏逆向工程概述1.2 法律与道德考量1.3 开发环境准备基础工具集:环境配置示例: 第二部分:静态分析技术2.1 APK反编译与资源提取使用Apktool解包:关键文件分析: 2…...
