Git 常用命令集与实际使用 Demo

news2025/4/15 17:26:34

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 将本地仓库与远程 建立关联,通常命名为 origingit 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 创建并切换到 newBrachgit 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/serverfixgit checkout -b sf origin/serverfix
git checkout --track origin/serverfix简写形式,让本地分支自动追踪远程 serverfixgit 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解决冲突后,继续 rebasegit 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 用于暂存工作进度,提升开发便利性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2334566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

100M/1000M 以太网静电浪涌防护方案

方案简介 以太网是一种生产较早且广泛应用的局域网通讯方式&#xff0c;同时也是一种协议&#xff0c;其核 心在于实现区域内&#xff08;如办公室、学校等&#xff09;的网络互联。根据数据传输速度的不同&#xff0c;以 太网大致可以划分为几个等级&#xff1a;标准以太网…

C语言中while的相关题目

一、题目引入 以下程序中,while循环的循环次数是多少次? 二、代码分析 首先要明确的一点 while循环是当循环条件为真 就会一直循环 不会停止 while中i是小于10的 说明i可以取到0 1 2 3 4 5 6 7 8 9 进入第一个if判断i小于1为真时执行continue i0是为真的 执行continue 后…

「Unity3D」图片导入选项取消Read/Write,就无法正确显示导入大小,以及Addressable打包无法正确显示的问题

如果在Edit -> Project Settings -> Editor中的“Load texture data on demand”勾选&#xff0c;就会让图片导入设置中&#xff0c;不勾选Read/Write&#xff0c;就无法正确显示纹理的大小数字。 更进一步的问题是&#xff0c;使用Addressable打包的时候&#xff0c; 如…

Xcode为不同环境配置不同的环境变量

一般有三种方式&#xff1a; 一、通过多Target 二、通过scheme,也就是多configurations 三、通过.xcconfig文件 先来看第二种方式&#xff1a;通过scheme,也就是多configurations,包括自定义User-settings 第一步&#xff1a;增加configurations,Xcode默认为我们生成了…

阿里通义实验室发布图片数字人项目LAM,实现高保真重建

简介 LAM项目结合了3D Gaussian Splatting&#xff08;高斯点云渲染&#xff09;和大规模预训练模型的优势&#xff0c;解决了传统头部重建方法效率低、依赖多数据的痛点。其背景源于AI生成内容&#xff08;AIGC&#xff09;领域对实时、高保真3D头像生成的需求&#xff0c;尤其…

镜像端口及观察端口的配置

配好路由器的各个接口的IP PC1ping PC3的IP&#xff0c;在路由器中抓2/0/0端口的包&#xff0c;可观察到无结果 输入observe-port interface g 2/0/0 命令配置观察端口 输入mirror to observe-port both命令 &#xff08;其中both表示接收来去的数据包&#xff0c;inboun…

STM32——I2C通讯(软件模拟)

I2C概念 I2C:Inter-Integrated Circuit&#xff08;内部集成电路&#xff09; Philps公司80年代初期开发的&#xff0c;引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性广泛地使用在系统内多个集成电路&#xff08;IC&#xff09;间的低速通讯 简单的双向两线制总线协议…

JetBrains Terminal 又发布新架构,Android Studio 将再次迎来新终端

不到一年的时间&#xff0c;JetBrains 又要对 Terminal 「大刀阔斧」&#xff0c;本次发布的新终端是重构后的全新的架构&#xff0c;而上一次终端大调整还是去年 8 月的 v2024.2 版本&#xff0c;并且在「Android Studio Ladybug | 2024.2.1」也被引入。 不知道你们用不用内置…

论文:Generalized Category Discovery with Large Language Models in the Loop

论文下载地址&#xff1a;Generalized Category Discovery with Large Language Models in the Loop - ACL Anthology 1、研究背景 尽管现代机器学习系统在许多任务上取得了优异的性能&#xff0c;绝大多数都遵循封闭世界的设置&#xff0c;假设训练和测试数据来自同一组预定义…

第十六届蓝桥杯 省赛C/C++ 大学B组

编程题目现在在洛谷上都可以提交了。 未完待续&#xff0c;写不动了。 C11 编译命令 g A.cpp -o A -Wall -lm -stdc11A. 移动距离 本题总分&#xff1a;5 分 问题描述 小明初始在二维平面的原点&#xff0c;他想前往坐标 ( 233 , 666 ) (233, 666) (233,666)。在移动过程…

【计网】网络交换技术之分组交换(复习自用,重要1)

复习自用的&#xff0c;处理得比较草率&#xff0c;复习的同学或者想看基础的同学可以看看&#xff0c;大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记&#xff1a; 电路交换 报文交换 一、分组交换的定义 1.定义 分组交换&#x…

解密CHASE-SQL和XiYan-SQL多智能体AI如何最终实现TEXT2SQL的突破

想象一个世界,无论技术背景如何,任何人都能轻松查询海量数据库、挖掘深层洞察。比如:“我想知道安徽地区最畅销电子产品的第三季度销售额?”——只需一句话。“去年营销支出与客户获取成本之间的相关性如何?”——像聊天一样输入问题。这就是Text-to-SQL的承诺:将人类语言…

思考力提升的黄金标准:广度、深度与速度的深度剖析

文章目录 引言一、广度的拓展&#xff1a;构建多元知识网络1.1 定义与重要性1.2 IT技术实例与提升策略小结&#xff1a;构建多元知识网络&#xff0c;提升IT领域思考力广度 二、深度的挖掘&#xff1a;追求知识的精髓2.1 定义与重要性2.2 IT技术实例与提升策略小结&#xff1a;…

web自动化:下拉选择框、弹出框、滚动条的操作

web自动化&#xff1a;下拉选择框、弹出框、滚动条的操作 一、下拉选择框 1、导包 from selenium.webdriver.support.select inport Select 2、实例化对象 Select(element) 3、常用方法 通过option索引来定位&#xff0c;从0开始&#xff1a;select_by_index(index)通过…

数字人:打破次元壁,从娱乐舞台迈向教育新课堂(4/10)

摘要&#xff1a;数字人正从娱乐领域的璀璨明星跨界到教育领域的智慧导师&#xff0c;展现出无限潜力。从虚拟偶像、影视游戏到直播短视频&#xff0c;数字人在娱乐产业中大放异彩&#xff0c;创造巨大商业价值。在教育领域&#xff0c;数字人助力个性化学习、互动课堂和虚拟实…

互联网三高-数据库高并发之分库分表ShardingJDBC

1 ShardingJDBC介绍 1.1 常见概念术语 ① 数据节点Node&#xff1a;数据分片的最小单元&#xff0c;由数据源名称和数据表组成 如&#xff1a;ds0.product_order_0 ② 真实表&#xff1a;再分片的数据库中真实存在的物理表 如&#xff1a;product_order_0 ③ 逻辑表&#xff1a…

Android游戏逆向工程全面指南

文章目录 第一部分&#xff1a;基础概念与环境搭建1.1 游戏逆向工程概述1.2 法律与道德考量1.3 开发环境准备基础工具集&#xff1a;环境配置示例&#xff1a; 第二部分&#xff1a;静态分析技术2.1 APK反编译与资源提取使用Apktool解包&#xff1a;关键文件分析&#xff1a; 2…

antv x6使用(支持节点排序、新增节点、编辑节点、删除节点、选中节点)

项目需要实现如下效果流程图&#xff0c;功能包括节点排序、新增节点、编辑节点、删除节点、选中节点等 html部分如下&#xff1a; <template><div class"MindMapContent"><el-button size"small" click"addNode">新增节点&…

榕壹云在线商城系统:基于THinkPHP+ Mysql+UniApp全端适配、高效部署的电商解决方案

项目背景&#xff1a;解决多端电商开发的痛点 随着移动互联网的普及和用户购物习惯的碎片化&#xff0c;传统电商系统面临以下挑战&#xff1a; 1. 多平台适配成本高&#xff1a;需要同时开发App、小程序、H5等多端应用&#xff0c;重复开发导致资源浪费。 2. 技术依赖第三方…

Android studio打包uniapp插件

一.参考资料与环境准备 原生工程配置需要使用到Android studio和HbuilderX 当前测试的as版本-20240301,下载地址&#xff1a;HbuilderX版本&#xff1a;4.36 二.插件创建流程 1.导入下载的UniPlugin-Hello-AS工程&#xff08;下载地址见参考资料&#xff09; 2.生成jks证书…