你不得不知道的常用 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,一经查实,立即删除!

相关文章

人机协同控制的相位差

人机协同控制是指人与机器之间通过特定的交互方式进行协同工作&#xff0c;共同完成某项任务或控制某个系统。在这种控制方式下&#xff0c;人与机器根据各自的能力和优势&#xff0c;相互配合和协作&#xff0c;达到更高效、更精确的控制效果。 相位差是指两个波的相位差异&am…

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…

逃离“思考碎片化”

小小的手机&#xff0c;叠加上无处不在的通信网络&#xff0c;让我们每个人都能连接互联网。不管是主动还是被动&#xff0c;如今的我们不得不调整甚至改变自己的学习、生活和工作的方式&#xff0c;以适应当下这个移动互联大时代。 这些变化中&#xff0c;固然很多都是积极的、…

Android 13 - Media框架(31)- ACodec(七)

之前的章节中我们解了 input buffer 是如何传递给 OMX 的&#xff0c;以及Output buffer 是如何分配并且注册给 OMX 的。这一节我们就来看ACodec是如何处理OMX的Callback的。 1、OMXNodeInstance Callback 这一节我们只大致记录Callback是如何传递给ACodec的。在之前的学习中我…

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家党政机关和重点单位相关网络安全技术人员参加此次活动。 美创科技作为上海市委…

C2593 operator << 不明确

错误 C2593 “operator <<” 不明确&#xff0c;通常出现在C代码中&#xff0c;当你尝试使用<<运算符&#xff08;通常用于输出或位移运算&#xff09;时&#xff0c;编译器无法确定使用哪个重载版本的运算符。这个错误可能由几个原因引起&#xff1a; 多个重载冲突…

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

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

三、04 nginx负载均衡

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

hadoop java 创建文件夹 弹出窗口填写文件夹名称

在Hadoop中使用Java创建文件夹时&#xff0c;无法弹出窗口来填写文件夹名称&#xff0c;因为Hadoop是一个分布式系统&#xff0c;运行在多台计算机上&#xff0c;无法直接与用户交互。 要创建文件夹&#xff0c;可以使用Hadoop的Java API中的Filesystem对象。以下是一个示例代…

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

【小白从小学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…

【架构设计】单体软件分布式化思考

单体软件 单体软件是历史悠久的软件架构形态&#xff0c;以下是一个简单的前后端分离的单体架构的 web 软件。 #mermaid-svg-0BFMiffXXuuYf3Jw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0BFMiffXXuuYf3Jw .er…