Git命令大全

2023-11-04

一、git config

配置 Git 的相关参数。

Git 一共有3个配置文件:

  1. 仓库级的配置文件:在仓库的 .git/.gitconfig,该配置文件只对所在的仓库有效。
  2. 全局配置文件:Mac 系统在 ~/.gitconfig,Windows 系统在 C:\Users<用户名>\.gitconfig。
  3. 系统级的配置文件:在 Git 的安装目录下(Mac 系统下安装目录在 /usr/local/git)的 etc 文件夹中的 gitconfig。
# 查看配置信息
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> -l

# 查看当前生效的配置信息
$ git config -l

# 编辑配置文件
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> -e

# 添加配置项
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> --add <name> <value>

# 获取配置项
$ git config <--local | --global | --system> --get <name>

# 删除配置项
$ git config <--local | --global | --system> --unset <name>

# 配置提交记录中的用户信息
$ git config --global user.name <用户名>
$ git config --global user.email <邮箱地址>

# 更改Git缓存区的大小
# 如果提交的内容较大,默认缓存较小,提交会失败
# 缓存大小单位:B,例如:524288000(500MB)
$ git config --global http.postBuffer <缓存大小>

# 调用 git status/git diff 命令时以高亮或彩色方式显示改动状态
$ git config --global color.ui true

# 配置可以缓存密码,默认缓存时间15分钟
$ git config --global credential.helper cache

# 配置密码的缓存时间
# 缓存时间单位:秒
$ git config --global credential.helper 'cache --timeout=<缓存时间>'

# 配置长期存储密码
$ git config --global credential.helper store

二、git clone*

从远程仓库克隆一个版本库到本地。

# 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下
$ git clone <远程仓库的网址>

# 指定本地仓库的目录
$ git clone <远程仓库的网址> <本地目录>

# -b 指定要克隆的分支,默认是master分支
$ git clone <远程仓库的网址> -b <分支名称> <本地目录>

三、git init*

初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录。

# 初始化本地仓库,在当前目录下生成 .git 文件夹
$ git init

四、git status*

查看本地仓库的状态。

# 查看本地仓库的状态
$ git status

# 以简短模式查看本地仓库的状态
# 会显示两列,第一列是文件的状态,第二列是对应的文件
# 文件状态:A 新增,M 修改,D 删除,?? 未添加到Git中
$ git status -s

五、git remote*

操作远程库。

# 列出已经存在的远程仓库
$ git remote

# 列出远程仓库的详细信息,在别名后面列出URL地址
$ git remote -v
$ git remote --verbose

# 添加远程仓库
$ git remote add <远程仓库的别名> <远程仓库的URL地址>

# 修改远程仓库的别名
$ git remote rename <原远程仓库的别名> <新的别名>

# 删除指定名称的远程仓库
$ git remote remove <远程仓库的别名>

# 修改远程仓库的 URL 地址
$ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>

六、git branch*

操作 Git 的分支命令。

# 列出本地的所有分支,当前所在分支以 "*" 标出
$ git branch

# 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
$ git branch -v

# 创建新分支,新的分支基于上一次提交建立
$ git branch <分支名>

# 修改分支名称
# 如果不指定原分支名称则为当前所在分支
$ git branch -m [<原分支名称>] <新的分支名称>
# 强制修改分支名称
$ git branch -M [<原分支名称>] <新的分支名称>

# 删除指定的本地分支
$ git branch -d <分支名称>

# 强制删除指定的本地分支
$ git branch -D <分支名称>

七、git checkout*

检出命令,用于创建、切换分支等。

# 切换到已存在的指定分支
$ git checkout <分支名称>

# 创建并切换到指定的分支,保留所有的提交记录
# 等同于 "git branch" 和 "git checkout" 两个命令合并
$ git checkout -b <分支名称>

# 创建并切换到指定的分支,删除所有的提交记录
$ git checkout --orphan <分支名称>

# 替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
$ git checkout <文件路径>

八、git add*

把要提交的文件的信息添加到暂存区中。当使用 git commit 时,将依据暂存区中的内容来进行文件的提交。

# 把指定的文件添加到暂存区中
$ git add <文件路径>

# 添加所有修改、已删除的文件到暂存区中
$ git add -u [<文件路径>]
$ git add --update [<文件路径>]

# 添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录
$ git add -A [<文件路径>]
$ git add --all [<文件路径>]

# 查看所有修改、已删除但没有提交的文件,进入一个子命令系统
$ git add -i [<文件路径>]
$ git add --interactive [<文件路径>]

九、git commit*

将暂存区中的文件提交到本地仓库中。

# 把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
$ git commit

# 把暂存区中的文件提交到本地仓库中并添加描述信息
$ git commit -m "<提交的描述信息>"

# 把所有修改、已删除的文件提交到本地仓库中
# 不包括未被版本库跟踪的文件,等同于先调用了 "git add -u"
$ git commit -a -m "<提交的描述信息>"

# 修改上次提交的描述信息
$ git commit --amend

十、git fetch

从远程仓库获取最新的版本到本地的 tmp 分支上。

# 将远程仓库所有分支的最新版本全部取回到本地
$ git fetch <远程仓库的别名>

# 将远程仓库指定分支的最新版本取回到本地
$ git fetch <远程主机名> <分支名>

十一、git merge*

合并分支。

# 把指定的分支合并到当前所在的分支下
$ git merge <分支名称>

十二、git diff

比较版本之间的差异。

# 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
$ git diff

# 比较暂存区中的文件和上次提交时的差异
$ git diff --cached
$ git diff --staged

# 比较当前文件和上次提交时的差异
$ git diff HEAD

# 查看从指定的版本之后改动的内容
$ git diff <commit ID>

# 比较两个分支之间的差异
$ git diff <分支名称> <分支名称>

# 查看两个分支分开后各自的改动内容
$ git diff <分支名称>...<分支名称>

十三、git pull*

从远程仓库获取最新版本并合并到本地。
首先会执行 git fetch,然后执行 git merge,把获取的分支的 HEAD 合并到当前分支。

# 从远程仓库获取最新版本。
$ git pull

十四、git push*

把本地仓库的提交推送到远程仓库。

# 把本地仓库的分支推送到远程仓库的指定分支
$ git push <远程仓库的别名> <本地分支名>:<远程分支名>

# 删除指定的远程仓库的分支
$ git push <远程仓库的别名> :<远程分支名>
$ git push <远程仓库的别名> --delete <远程分支名>

十五、git log*

显示提交的记录。

# 打印所有的提交记录
$ git log

# 打印从第一次提交到指定的提交的记录
$ git log <commit ID>

# 打印指定数量的最新提交的记录
$ git log -<指定的数量>

十六、git reset*

还原提交记录。

# 重置暂存区,但文件不受影响
# 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件
# 没有指定 commit ID 则默认为当前 HEAD
$ git reset [<文件路径>]
$ git reset --mixed [<文件路径>]

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset <commit ID>
$ git reset --mixed <commit ID>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
# 相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
$ git reset --soft <commit ID>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard <commit ID>

十七、git revert

生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。

# 生成一个新的提交来撤销某次提交
$ git revert <commit ID>

十八、git tag*

操作标签的命令。

# 打印所有的标签
$ git tag

# 添加轻量标签,指向提交对象的引用,可以指定之前的提交记录
$ git tag <标签名称> [<commit ID>]

# 添加带有描述信息的附注标签,可以指定之前的提交记录
$ git tag -a <标签名称> -m <标签描述信息> [<commit ID>]

# 切换到指定的标签
$ git checkout <标签名称>

# 查看标签的信息
$ git show <标签名称>

# 删除指定的标签
$ git tag -d <标签名称>

# 将指定的标签提交到远程仓库
$ git push <远程仓库的别名> <标签名称>

# 将本地所有的标签全部提交到远程仓库
$ git push <远程仓库的别名> –tags

十九、git mv

重命名文件或者文件夹。

# 重命名指定的文件或者文件夹
$ git mv <源文件/文件夹> <目标文件/文件夹>

二十、git rm

删除文件或者文件夹。

# 移除跟踪指定的文件,并从本地仓库的文件夹中删除
$ git rm <文件路径>

# 移除跟踪指定的文件夹,并从本地仓库的文件夹中删除
$ git rm -r <文件夹路径>

# 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
$ git rm --cached

二一、git cherry-pick

把已经提交的记录合并到当前分支。

# 把已经提交的记录合并到当前分支
$ git cherry-pick <commit ID>

二二、git stash

把当前目录和index中的所有改动(但不包括未track的文件)压入一个栈,然后留给你一个clean的工作状态,即处于上一次最新提交处

# 注意:可以通过git stash save message给内容增加一个信息。

# 查看栈列表
$ git stash list
stash@{0}: WIP on secondSlave: 777a016 modify new.txt

# 取出stash中最近的暂存(stash@{0}),并且应用于当前的工作目录
$ git stash apply
# 如果有多个stash,则可以通过git stash apply stash@{1}命令指定.

# 应用当前栈内容的当时,删除该栈;
$ git stash list
stash@{0}: WIP on secondSlave: 777a016 modify new.txt
stash@{1}: WIP on secondSlave: 777a016 modify new.txt
$ git stash pop

$ git stash list
stash@{0}: WIP on secondSlave: 777a016 modify new.txt

# 清除暂存
$ git stash clear

移除某次暂存
$git stash drop stash@{0}

Git操作场景示例

  1. 删除掉本地不存在的远程分支
    多人合作开发时,如果远程的分支被其他开发删除掉,在本地执行 git branch --all 依然会显示该远程分支,可使用下列的命令进行删除:
# 使用 pull 命令,添加 -p 参数
$ git pull -p

# 等同于下面的命令
$ git fetch -p
$ git fetch --prune origin
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git命令大全 的相关文章

  • 关于redirect重定向的使用以及和二维码的结合

    redirect叫做重定向 重定向其实就是最后跳转是靠浏览器去跳转的 对比的就是转发 所有的跳转都是有web服务器来跳转 上面这个图说的不全面 因为除了页面 接口请求也是可以跳转的 比如请求接口1 接口1返回一个接口2 浏览器重定向接口2
  • 函数隐藏

    1 函数隐藏 派生类中函数名字与基类的成员函数名字相同时 派生类的成员函数会屏蔽基类中同名的成员函数 派生类中的成员变量与基类的成员变量同名时 派生类中的成员变量会屏蔽基类中同名的成员变量 如果要使用的话要加作用域 通过派生类对象 指针 引
  • 论:栈

    前言 本文从栈的定义开始 根据栈的两种存储结构 顺序和链式 分别实现栈的基本操作 目录 栈的定义 栈的基本操作 顺序栈实现 链式栈实现 栈的定义 栈 只允许通过访问它的一端来实现数据存储和检索的一种线性数据结构 即从固定一端插入数据 删除数
  • 阿里云原生张羽辰:服务发现技术选型那点事儿

    作者 张羽辰 同昭 引子 什么是服务发现 近日来 和很多来自传统行业 国企 政府的客户在沟通技术细节时 发现云原生所代表的技术已经逐渐成为大家的共识 从一个虚无缥缈的概念渐渐变成这些客户的下一个技术战略 自然 应用架构就会提到微服务 以及其
  • git rebase -i 进阶

    今天学习了 git rebase i 这篇文章写的不错 推荐一下 git rebase 详解 但我用的过程中也遇到了一些问题 在record或者edit操作的时候报错了 CONFLICT content Merge conflict in
  • 深度学习课程作业——手写数字识别(卷积神经网络)

    本实验过程需要用到torchvision包 没有安装的小伙伴 windows用户可直接使用cmd命令 输入命令行pip install torchvision即可 仍安装不了的 建议csdn直接查找安装教程 一 加载数据集 1 1 导入实验
  • Bean销毁之前的行为

    与上一篇中的定制初始化行为相似 Spring也提供了两种方法定制Bean销毁之前的特定行为 如下 1 使用destroy method属性 2 实现DisposableBean接口 该接口中提供了一个方法 void destroy thro
  • 微信接口 报错61003

    获取授权token报错61003 授权信息已确认无误 要如何解决 请求地址 https api weixin qq com cgi bin component api authorizer token 错误信息 错误代码 61003 错误信
  • 美国职业专家:工作效率和薪水加倍七秘诀

    如果问 你想不想使自己的收入加倍 我猜每个人的答案都是 YES 如果我继续问 你相不相信现在你的收入会加倍 我想有一些人可能会没把握 有一些人认为不太可能 我告诉各位 你们每个人的收入一定会加 倍 因为按照每年物价增长率及通货膨胀的正常速度
  • 剑指offer java版 test66—机器人运动路径

    题目 地上有一个m行和n列的方格 一个机器人从坐标0 0的格子开始移动 每一次只能向左 右 上 下四个方向移动一格 但是不能进入行坐标和列坐标的数位之和大于k的格子 例如 当k为18时 机器人能够进入方格 35 37 因为3 5 3 7 1
  • 【Qt Quick聊天软件练习】二、登录界面搭建

    目录 1 主界面 2 创建登录面板qml文件 3 补充 结语 1 主界面 大概长成这样 2 创建登录面板qml文件 新建一个qml文件命名为LoginPanel qml 首先先把右上角两个圆圈搓出来 一个是缩小 一个是关闭 main qml
  • Anaconda下安装mysql-python的包

    Anaconda下需要使用Python与MySQL数据库进行交互 所以需要import一个mysql python的包 但是在ipython中引用的时候发现Anaconda并没有包含该包 因此需要自己对该依赖包进行安装 打开windows下
  • 非投资建议

    沪深300 PE在10左右 就是基金的买点 20不能买 低值买入 基金经理 从业5年 年华收益15 以上 PE PB P 总市值 E 盈利 净利润 B 净资产 PE 市盈率 PB 市净率 一 市盈率PE 1 公式是 PE P E 市盈率的计
  • ARM LINUX与普通LINUX区别

    相对于ARM linux 我们说的普通linux指的是X86 linux 他们都是linux系统 但是由于ARM和X86是不同的CPU架构 他们的指令集不同 所以软件编译环境不同 软件代码一般不能互用 一般需要进行兼容性移植 X86是经典的
  • 一篇关于程序员的文章

    选择比努力更重要 关于方向的选择其实越早确定越好 生活中我们要面临无数个选择 前几天看的一个黑客相关的美剧中有句台词说的不错 life is binary 生活就是二进制 一个个0101组成的 每一次抉择 选了就是1 不选就是0 另外也有一
  • java 多线程面试题及答案

    1 并行和并发有什么区别 并行是指两个或者多个事件在同一时刻发生 而并发是指两个或多个事件在同一时间间隔发生 并行没有对 CPU 资源的抢占 并发执行的线程需要对 CPU 资源进行抢占 并行执行的线程之间不存在切换 并发操作系统会根据任务调
  • maven安装与配置 及 执行命令mvn -v报错解决方案

    写在前边 需要准备的前提 JDK IDEA Maven程序包 安装包下载地址 http maven apache org download cgi 解压后如下图 记住解压路径 然后新建环境变量MAVEN HOME 并赋值 D apache
  • 单相Boost功率因数校正电路(PFC)设计与仿真(Simulink & Saber):第一章 PFC基础知识与电路参数设计

    写在前面 教程是根据Mathworks公司的有源功率因数校正教程 点这里跳转 和那日沙等老师编著的 电力电子 电机控制系统的建模及仿真 改写的 设计思路基本与之一致 嫌看文章麻烦的同学可以直接跳转看视频和查阅相关书籍 Simulink仿真部
  • vue实现绑定微信登录全过程

    一 需求说明 通过vue绑定微信登录 首次进入获取code 通过code获取openId查用户 然后进行登录 第二次进入若绑定过微信 直接登录进入主界面 若没绑定过微信 则跳转到登录页面 二 准备工作 1 开通微信公众号的相关功能 测试账号
  • oracle时间相减得到天_Oracle 时间相减得出毫秒、秒、分、时、天,,【转】

    http blog csdn net redarmy chen article details 7351410 oracle 两个时间相减默认的是天数 oracle 两个时间相减默认的是天数 24 为相差的小时数 oracle 两个时间相减

随机推荐

  • Linux netstat

    摘录 https www runoob com w3cnote linux check port usage html Linux 查看端口占用情况可以使用 lsof 和 netstat 命令 lsof lsof list open fil
  • 电赛公开课整理(一),电路基础,截图+模电知识【16000字】【个人注释】【转载】

    文章目录 电赛公开课整理 一 电路基础 截图 模电知识 15000字 原创 电赛公开课整理 二 电路基础 截图 模电知识 16000字 原创 一 电压源和电流源 1 电压源的内阻 2 电流源的内阻 课后问题 二 电阻 电容与电感 1 电阻
  • (小白学习之路1)Linux环境下C语言链接Mysql数据库,连接失败问题

    可能出现的问题 can t connect to xxx数据库 说明数据库验证成功但是打不开 需要添加libmysqlclient so动态库 需要查看动态库的位置 一般在usr local下 如果没有该库需要手动下载 http blog
  • 20行代码实现人脸检测

    如今 刷脸 已经成为人们生活中的日常 刷脸支付 人脸解锁 门禁等 都运用了人脸识别技术 人脸识别技术已广泛应用于金融 司法 公安 教育 医疗等诸多领域 同时也涌现出如 旷视科技 商汤科技等一批优秀的企业 人脸识别算法主要分为三个流程 人脸检
  • DNF类游戏动作实现(C语言)

    没有接触制作小游戏前 感觉做游戏很不可思议 游戏里的人物是怎么移动的 怎么攻击 释放技能 现在逐渐了解到之后 发现2d游戏人物的动作更多是图片的拼接 动作是否精细 由这个动作的帧数决定 这篇博客会简单实现2d人物的动作 效果如下 2d人物动
  • rnn pytorch_pytorch介绍rnn字符级文本生成

    rnn pytorch Today we ll continue our journey through the fascinating world of natural language processing NLP by introdu
  • MySQL可见_MySQL 8.0新特性 -- 不可见索引

    MySQL支持不可见索引 即优化器不会使用该索引 不可见索引特性不可以用于主键 默认索引是可见的 可以在create table create index alter table操作中使用关键字visible invisible来指定索引是
  • Python之整型

    1 python中一切都是对象 因此python中其实根本不存在int float这些类型 2 int其实是一个python对象 3 整数类型 int 在python中实际是上长整型 理论是可以存储无限大小的整型数 正数负数和0 一 int
  • linux杀死进程的五种方法

    方法一 Terminal终端输入 gnome system monitor 就可以打开system monitor 如图 然后找到相应进程 右击选择kill process就可以了 方法二 通过kill 进程id的方式可以实现 首先需要知道
  • 目标跟踪序列化测试以及搜参

    1 序列化测试 对于一些跟踪算法 特别是siamese系列 一般进行20epochs的训练 对应20个训练模型 特别是backbone解冻的后10个模型 均有可能出现最好的结果 got 10k与lasot的结果一般容易出现在10 15 ot
  • 第三章:primitive主数据类型和引用-认识变量

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第三章 primitive主数据类型和引用 认识变量 认识变量 变量有两种 primitive 简单的 主数据类型和引用 目前我们已经使用过变量的地方 对象的状态 i
  • 没有用到React,为什么我需要import引入React?

    没有用到React 为什么我需要import引入React 本质上来说JSX是React createElement component props children 方法的语法糖 所以我们如果使用了JSX 我们其实就是在使用React 所
  • 【华为OD机试真题 python】快递运输

    题目描述 运送的快递放在大小不等的长方体快递盒中 为了能够装载更多的快递同时不能让货车超载 需要计算最多能装多少个快递 注 快递的体积不受限制 快递数最多1000个 货车载重最大50000 输入描述 第一行输入每个快递的重量 用英文逗号隔开
  • 小爱控制HA上的开关(红外线)

    小爱同学控制homeassistant in 树莓派 by 红外线 前言 租了房子以后一直想搞智能家居自动化各种事情 最近终于腾出空可以搞辣 研究了一圈感觉拆开关太麻烦了 零火线还要撬开关 租的房子不敢瞎搞 想了一下可以用arduino 树
  • VMware Workstation 入门使用

    文章目录 名词解释 事先准备 安装 VMware Tools 将鼠标焦点从虚拟机中退出 共享剪切板 共享文件 夹 虚拟机为 Windows 虚拟机为 Linux 虚拟机快照的创建与加载 创建虚拟机快照 加载虚拟机快照 克隆虚拟机 构建宿主机
  • 【ztree应用】基于jquery实现带检索功能的ztree文件夹折叠效果(附源码下载)

    文章目录 写在前面 涉及知识 效果展示 1 搭建dom 2 引入ztree和jquery 3 实现搜索功能及调用 4 源码分享 1 百度网盘 2 123云盘 3 邮箱留言 总结 写在前面 前些日子 领导要求做一个关于数据库管理的工具 主要想
  • 循环点击链接selenium模拟

    https blog csdn net qq 43251443 article details 82819887转载
  • 私有地址和保留地址

    A类 10 X X X是私有地址 私有地址就是在互联网上不使用 而被用在局域网络中的地址 127 X X X是保留地址 用做循环测试用的 B类 172 16 0 0 172 31 255 255是私有地址 169 254 X X是保留地址
  • 深度学习进阶线路图

    研究动态 深度学习进阶线路图 一 在应用机器学习的时候 最耗时和重要的阶段是对原始数据进行特征提取 深度学习是一个新的机器学习的分支 他要做的就是跨过整个特征设计阶段 而是直接从数据中学习得到 大部分的深度学习方法都是基于神经网络的 在这些
  • Git命令大全

    Git命令大全 一 git config 二 git clone 三 git init 四 git status 五 git remote 六 git branch 七 git checkout 八 git add 九 git commit