你不得不知道的常用 Git 命令

Dingtalk_20240111202114.jpg

最近在学习的时候发现 git 命令没有自己想象中那么简单,特此做一期 《 常用 Git 命令 》,不仅是给掘友分享,也能巩固自己学到的知识。

在此向大家推荐一个学习 git 指令的小游戏 Learn Git Branching,以通关的方式进行学习,可以直观的感受到每一个指令的效果。

其他专栏可从下面了解

专栏一:Node.js 内置模块大揭秘 👇👇👇

专栏二:OpenAI:探索超级智能未来的引领者  👇👇👇

专栏三:解密八股文 :JS面试宝典 👇👇👇

基础概念

OIP.jpg

在 Git 命令中,有一些基础概念是非常重要的

  1. 仓库(Repository):

    • 概念: 仓库是存储项目文件和版本历史的地方,可以理解为我们整个项目的存储空间。
    • 解释: 仓库就像是我们项目的文件夹,包含了我们项目的所有文件和它们的变更历史。
  2. 工作区(Working Directory):

    • 概念: 工作区是我们实际编辑文件的地方,是我们电脑上存放项目文件的文件夹。
    • 解释: 工作区就是我们平常编辑、添加、删除文件的地方,是我们看得到和操作的项目文件夹。(比如在vscode打开的文件夹)
  3. 暂存区(Staging Area):

    • 概念: 暂存区是一个中间区域,用于存储我们已经修改但还没有提交的更改。
    • 解释: 暂存区就像是一个准备区域,我们可以将需要提交的更改放在这里,然后一次性提交到版本历史中。git add <file>这条指令就是将指定文件的更改从工作区添加到暂存区。我们可以使用 . 来添加所有更改,即git add .
  4. 提交(Commit):

    • 概念: 提交是将工作区和暂存区的更改永久保存到版本历史中的操作。
    • 解释: 提交就是将我们在工作区和暂存区所做的更改保存到我们项目的时间线上,形成一个新的版本。
  5. 分支(Branch):

    • 概念: 分支是项目的一个独立线条,我们可以在分支上做出修改而不影响主线。
    • 解释: 分支就像是项目的一个平行世界,我们可以在这个世界里做实验性的修改,然后决定是否将这些修改合并到主线。
  6. 合并(Merge):

    • 概念: 合并是将一个分支的更改合并到另一个分支的过程。
    • 解释: 合并就是将我们在一个分支上做的修改合并到另一个分支上,使它们共存。
  7. 远程仓库(Remote Repository):

    • 概念: 远程仓库是存储在网络上的项目仓库,通常是在服务器上。
    • 解释: 远程仓库就像是项目的备份存放地,我们可以把我们的项目推送到远程仓库,也可以从远程仓库拉取别人的更改。
  8. 拉取(Pull):

    • 概念: 拉取是从远程仓库获取最新更改并合并到我们的本地工作区的操作。
    • 解释: 拉取就是从云端下载别人在项目中的修改,使我们的本地工作区保持最新。
  9. 推送(Push):

    • 概念: 推送是将我们的本地提交上传到远程仓库的操作。
    • 解释: 推送就是把我们的本地修改上传到云端,使得远程仓库也能够看到我们的最新版本。

git 常用命令

Dingtalk_20240111202114.jpg

git init

  • 初始化一个新的Git仓库
  • 这个命令在当前目录创建一个新的 Git 仓库。它会在目录下生成一个.git的子目录,包含Git仓库的所有必要文件。
 

bash

复制代码

# 初始化一个新的 Git 仓库。在项目的根目录执行此命令,会创建一个隐藏的 `.git` 目录,用于存储 Git 仓库的配置和元数据。 git init # 在指定目录下初始化一个新的 Git 仓库。将 `<directory>` 替换为你想要创建仓库的目录名称。 git init <directory> # 初始化一个裸仓库(Bare Repository)。裸仓库通常用于共享和远程仓库。在这个仓库中,没有工作目录,只保存版本历史信息。 git init --bare <directory> # 使用指定的模板目录初始化 Git 仓库。模板目录中包含了一些预设的配置和钩子脚本。 git init --template=<template_directory> # 将 `.git` 目录初始化到指定位置,而不是在当前目录下创建。可以使用这个选项在项目目录之外管理 `.git` 目录。 git init --separate-git-dir=<git_directory> # 在初始化时不显示额外的信息,以安静模式执行。 git init --quiet # 初始化一个裸仓库,并设置共享权限。`<permissions>` 为权限设置,例如 `group` 表示将仓库设置为组共享。 git init --bare --shared=<permissions>

git clone <repository>

  • 克隆一个远程仓库到本地
  • 使用这个命令可以复制远程仓库的所有文件到本地,创建一个相同的仓库副本。
 

bash

复制代码

# 将 `<repository>` 处的远程仓库克隆到当前工作目录。例如:`git clone https://github.com/example/repository.git` git clone <repository> # 将 `<repository>` 处的远程仓库克隆到指定目录 `<directory>` 中。例如:`git clone https://github.com/example/repository.git my_project` git clone <repository> <directory>`

git add <file>

  • 将文件添加到暂存区
  • 这个命令将指定的文件或目录的更改添加到Git的暂存区,准备提交到版本历史。
 

bash

复制代码

# 将指定文件添加到暂存区 git add <file1> <file2> ... # 将所有更改添加到暂存区 git add -A # 或 git add --all # 将当前目录及其子目录中的所有更改添加到暂存区 git add . # 添加当前目录下所有新文件和修改的文件,但不包括被删除的文件 git add -u # 或 git add --update # 添加交互式模式,允许用户选择要添加的文件 git add -i # 或 git add --interactive

git commit -m "message"

  • 提交暂存区的更改到仓库
  • 通过这个命令,你将暂存区的更改永久保存到Git仓库中,"message"是对本次提交的描述信息。
 

bash

复制代码

# 提交暂存区的所有更改,并添加提交信息 git commit -m "message" # 使用编辑器编写详细的提交信息,这会打开默认编辑器 git commit # 提交暂存区的所有更改,并将更改和提交信息放入一个新的提交中 git commit -am "Your commit message here" # 修改最后一次提交的提交信息 git commit --amend # 提交时包含指定文件,并添加提交信息 git commit <file1> <file2> ... -m "Your commit message here" # 将暂存区的更改拆分成多个提交,交互式地选择要提交的文件 git commit --interactive # 提交时允许修改之前的提交信息 git commit --reuse-message=HEAD # 提交时不生成新的提交对象,只更新上一次提交的时间戳和提交信息 git commit --only --amend

git status

  • 查看工作区、暂存区和仓库的状态
  • 这个命令显示当前工作目录中文件的状态,包括已修改、已暂存和未跟踪的文件。
 

bash

复制代码

# 查看工作区和暂存区的状态 git status # 查看更详细的状态信息,包括未跟踪的文件 git status -u # 或 git status --untracked-files # 以简洁的格式显示状态,可用于脚本或其他自动化工作 git status --porcelain # 查看已暂存的变更 git status --cached # 或 git status --staged # 在列出的文件前面显示相对路径 git status --short # 显示未被忽略的文件 git status --no-ignore # 显示忽略的文件 git status --ignored # 以更紧凑的格式显示分支信息 git status -b # 或 git status --branch # 显示所有分支的信息,包括远程跟踪分支 git status -vv # 或 git status --verbose

git log

  • 查看提交日志
  • 通过这个命令可以查看项目的提交历史,包括提交者、提交时间和提交信息。
 

bash

复制代码

# 显示提交历史,包括提交的 SHA 值、作者、日期和提交信息 git log # 以图形化的方式显示提交历史,更直观地展示分支和合并信息 git log --graph # 限制显示的提交数目,例如只显示最近的 3 个提交 git log -n 3 # 显示每个提交的详细更改,包括文件路径和具体变更内容 git log -p # 或 git log --patch # 显示每个提交的简略统计信息,包括插入和删除的行数 git log --stat # 以一行的格式显示每个提交的简略信息 git log --oneline # 查看某个文件的提交历史 git log <file> # 显示某个作者的提交历史 git log --author=<author> # 仅显示包含指定关键字的提交 git log --grep=<keyword> # 仅显示指定时间范围内的提交历史 git log --since=<date> --until=<date> # 以时间线的方式显示提交历史,每个提交一行 git log --pretty=format:"%h - %an, %ar : %s" # 以某种自定义格式显示提交历史 git log --pretty=format:"%h - %an, %ad : %s"

git branch

  • 列出本地分支
  • 这个命令列出当前仓库中所有的本地分支,当前分支前会有一个星号。
 

bash

复制代码

# 列出本地所有分支 git branch # 创建一个新的分支 git branch <branch_name> # 切换到指定分支 git checkout <branch_name> # 或 git switch <branch_name> # 创建并切换到新的分支 git checkout -b <new_branch> # 或 git switch -c <new_branch> # 删除本地分支 git branch -d <branch_name> # 强制删除本地分支 git branch -D <branch_name> # 列出远程仓库的所有分支 git branch -r # 列出所有本地和远程仓库的分支 git branch -a # 查看每个分支的最后一次提交 git branch -v # 查看每个分支的最后一次提交和提交信息 git branch -vv # 合并指定分支到当前分支 git merge <branch_name> # 使用 rebase 将当前分支的提交移动到指定分支的最后 git rebase <branch_name> # 查看分支合并图 git log --graph --oneline --all # 设置当前分支的追踪分支 git branch --set-upstream-to=<remote>/<branch> # 或 git branch -u <remote>/<branch> # 查看所有已合并到当前分支的分支 git branch --merged # 查看所有未合并到当前分支的分支 git branch --no-merged

git checkout <branch>

  • 切换到指定分支
  • 使用这个命令可以切换到指定的本地分支,工作目录会变成该分支的最新状态。

git merge <branch>

  • 合并指定分支到当前分支
  • 这个命令用于将指定分支的更改合并到当前所在的分支,通常用于将一个特性分支的更改合并到主分支。

Branch-2.png

git pull

  • 从远程仓库拉取最新的更改
  • 这个命令等同于git fetch followed by git merge,它从远程仓库获取最新的更改并自动合并到当前分支。
 

bash

复制代码

# 从远程仓库拉取并合并最新的更改到当前分支 git pull # 从远程仓库拉取并重新播放(rebase)本地未推送的更改 git pull --rebase # 从指定的远程仓库拉取并合并更改 git pull <remote> <branch> # 从远程仓库拉取指定分支的更改,并合并到当前分支 git pull origin <branch> # 从远程仓库拉取指定分支的更改,并重新播放(rebase)到当前分支 git pull --rebase origin <branch>

git push

  • 推送本地更改到远程仓库
  • 这个命令将本地的提交推送到远程仓库,使得远程仓库中也有了最新的更改。
 

bash

复制代码

# 推送本地分支的更改到远程仓库 git push # 推送本地分支的更改到指定远程仓库 git push <remote> <branch> # 推送本地分支的更改到远程仓库,并将分支关联到远程分支 git push -u <remote> <branch> # 强制推送本地分支的更改到远程仓库(谨慎使用) git push -f # 或 git push --force # 推送本地分支的更改到远程仓库,并删除远程分支的相应分支 git push <remote> --delete <branch> # 或 git push <remote> :<branch> # 推送所有本地分支的更改到远程仓库 git push --all # 推送所有本地分支的更改到远程仓库,并删除远程仓库中不存在的本地分支 git push --all --prune # 推送所有标签到远程仓库 git push --tags # 推送指定标签到远程仓库 git push <remote> <tag>

git remote -v

  • 查看远程仓库的详细信息
  • 这个命令显示与当前本地仓库关联的远程仓库的详细信息,包括URL。

git diff

  • 查看工作区与暂存区的差异
  • 这个命令显示工作区与暂存区之间的差异,即显示尚未暂存的更改。

git reset <file>

  • 撤销对文件的暂存
  • 这个命令用于取消对指定文件的暂存,将文件从暂存区恢复到工作区。

git rm <file>

  • 从版本库中删除文件
  • 这个命令用于从Git版本库中删除指定的文件,同时会将这个删除操作暂存。

git tag <tag_name>

  • 创建一个标签
  • 通过这个命令可以创建一个标签,通常用于标记某个重要的提交,方便回溯历史。

git fetch

  • 从远程仓库拉取所有分支的最新信息
  • 这个命令从远程仓库获取所有分支的最新信息,但不自动合并到本地分支。通常与git merge一起使用

作者:知了知了__
链接:https://juejin.cn/post/7323014486078865443
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

2024年【高处安装、维护、拆除】考试题及高处安装、维护、拆除模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 高处安装、维护、拆除考试题是安全生产模拟考试一点通总题库中生成的一套高处安装、维护、拆除模拟试题&#xff0c;安全生产模拟考试一点通上高处安装、维护、拆除作业手机同步练习。2024年【高处安装、维护、拆除】…

电脑的任务栏怎么恢复到底下?简单的4个方法帮你解决!

“我在使用电脑的时候突然发现电脑底部的任务栏不见了&#xff0c;有什么方法可以将任务栏恢复到底下吗&#xff1f;快给我出出主意吧&#xff01;” 在使用电脑时&#xff0c;我们可能会发现电脑的任务栏跑到屏幕顶部或消失的情况。这不仅影响了我们的使用体验&#xff0c;还可…

如何使用左移方法优化性能测试

开发周期早期阶段的性能测试&#xff08;左移方法&#xff09;可以让产品提供更好的性能和更高的投资回报率。查看如何使用左移方法优化性能测试。 每一次冲刺都至关重要&#xff0c;并且做出的决策速度快如闪电。为了促进快速反馈过程&#xff0c;测试团队必须在很短的时间内…

JS逆向实战案例1——某房地产url动态生成

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 一、 反爬分析 url&#xff1a;aHR0cHM6Ly9uZXdob3VzZS4wNTU3ZmRjLmNvbQ 该站点项目url通过点击JS生成&#xff0c;project_id与生成后…

mysql清空并重置自动递增初始值

需求&#xff1a;当上新项目时&#xff0c;测试环境数据库导出来的表id字段一般都有很大的初始递增值了&#xff0c;需要重置一下 先上代码&#xff1a; -- 查看当前自动递增值 SHOW CREATE TABLE table_name; -- 重建自动递增索引&#xff08;可选&#xff09; ALTER TABLE t…

Spring - 如何控制多个 AOP 切面执行顺序?

众所周知&#xff0c;Spring 声明式事务是基于 AOP 实现的&#xff0c;那么&#xff0c;如果我们在同一个方法自定义多个 AOP&#xff0c;我们如何指定他们的执行顺序呢&#xff1f; 三种解决方案 1、通过实现 org.springframework.core.Ordered 接口 Component Aspect S…

Vue-13、Vue绑定css样式

1、绑定css样式字符串写法&#xff0c;适用于&#xff1a;样式的类名不确定 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>绑定css样式</title><!--引入vue--><script type"tex…

上海市委网信办技术沙龙|美创科技分享数据流动下的安全应对

为有效提升上海市党政机关和重点单位的技术能力与水平&#xff0c;1月11日&#xff0c;上海市委网信办组织开展以“数据安全治理与合规流动经验分享”为主题的第三十二期网络安全技术沙龙。全市26家党政机关和重点单位相关网络安全技术人员参加此次活动。 美创科技作为上海市委…

关于git删除仓库中原本应该忽略的文件的研究

开门见山&#xff0c;先抛出一个结论&#xff1a; 任何被提交到远程仓库中的数据&#xff0c;都不能被彻底删除&#xff0c;只要提交上去了&#xff0c;就会永远留存。 任何被提交到远程仓库中的数据&#xff0c;都不能被彻底删除&#xff0c;只要提交上去了&#xff0c;就会…

三、04 nginx负载均衡

目录 简介1、准备三台主机且都安装了ngix2、先配置第一个服务主机配置文件nginx.conf制作页面写入页面内容检测语法&重启nginx查看第一个服务器再用同样样的方法 搭建第一个web 服务即可可以使用scp 直接复制 第一个web 服务器的文件配置文件第二个页面的 html 代码 配置代…

分别取出一个时间序列中的年份,月份和日期

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 只留下时间序列中 各行元素的年、月或日 结果的数据类型是序列 Series.dt.year Series.dt.month Series.dt.day [太阳]选择题 以下关于代码输出结果的说法中正确的是? import pandas as pd ts…

“超人练习法”系列09:耶克斯–多德森定律

01 你现有水平和学习风格 搞明白自己是个大事&#xff0c;搞不明白就糊涂一辈子。 首先&#xff0c;要弄清楚自己现在是个啥水平&#xff0c;有啥技能可以拿出来的&#xff0c;然后再定个目标&#xff0c;知道自己想往哪方面努力。 你擅长的学习方式是啥呢&#xff1f;是那种…

第十五届蓝桥杯单片机组备赛——独立键盘矩阵键盘

文章目录 一、按键原理二、独立键盘&矩阵键盘2.1 独立按键2.2 矩阵键盘 一、按键原理 原理很简单&#xff0c;当我们没有按下SW2时&#xff0c;由于上拉电阻得作用&#xff0c;使得输入引脚得信号为高电平&#xff0c;当按下按键后&#xff0c;引脚直接接地&#xff0c;输入…

虹科分享 | PCAN工具:强大的CAN通讯解决方案,你了解多少?

导读&#xff1a;在当今的汽车和工业自动化领域&#xff0c;可靠的通讯系统至关重要&#xff0c;PCAN工具为这些应用提供了强大的支持。本文将介绍PCAN工具的功能、应用和优势&#xff0c;以帮助您根据实际需求选择合适的工具和配件。 PCAN 网络允许 PCAN 应用程序&#xff08…

redis原理(二)数据结构

redis可以存储键与5种不同数据结构类型之间的映射&#xff1a; String类型的底层实现只有一种数据结构&#xff0c;也就是动态字符串。而List、Hash、Set、ZSet都由两种底层数据结构实现。通常我们把这四种类型称为集合类型&#xff0c;它们的特点是一个键对应了一个集合的数据…

【MATLAB】【数字信号处理】产生系统的单位冲激响应h(t)与H(z)零极点分布

一、实验目的与要求 产生h(t) 与H(z) 零极点分布 二、实验仪器 微机&#xff0c;仿真软件MATLAB 2022a 三、实验内容与测试结果 1.已知描述连续系统的微分方程为y(t)5y(t)6y(t)2x(t)8x(t) &#xff0c;计算系统的单位冲激响应h(t) 程序如下&#xff1a; clear all; ts0;…

JavaScript采集各大电商平台关于预制菜酸菜鱼销售量

因为我喜欢吃酸菜鱼&#xff0c;但是自己弄又弄不来&#xff0c;想从网上找找看看&#xff0c;但是种类多&#xff0c;自己逐个选择又太浪费时间。索性利用自己专业爬虫知识&#xff0c;一边检验我最近代码水平&#xff0c;另一方面还能选择到满意的年货。过去写个各大平台预制…

centos7 arm服务器编译安装gcc 8.2

前言 当前电脑的gcc版本为4.8.5&#xff0c;但是在编译其他依赖包的时候&#xff0c;出现各种奇怪的问题&#xff0c;会莫名其妙的中断编译。本地文章讲解如何自编译安装gcc&#xff0c;替换系统自带的gcc。 环境准备 gcc 需要 8.2&#xff1a;下载地址 开始编译 1、解压gcc…

医疗器械网络安全风险评定CVSS打分

为了完成医疗器械软件的网络安全风险评定相关文档&#xff0c;需要进行CVSS评分&#xff0c;这个评分对于第一次做的人来说感觉还是有些迷惑的&#xff0c;查了一些资料&#xff0c;留作参考。 CVSS 指的是 Common Vulnerability Scoring System&#xff0c;即通用漏洞评分系统…

QLExpress和Groovy对比

原理 Groovy groovy基于JVM运行。 编译时&#xff1a;将源文件编译成class文件后&#xff0c;用java的classLoader加载&#xff1b;运行时&#xff1a;直接用groovy classLoader加载 QLExpress QLExpress将文本解析成AST&#xff0c;用java对象表达后执行。 特点 Groo…