你不得不知道的常用 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
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙Harmony--状态管理器-@Observed装饰器和@ObjectLink装饰器详解

经历的越多&#xff0c;越喜欢简单的生活&#xff0c;干净的东西&#xff0c;清楚的感觉&#xff0c;有结果的事&#xff0c;和说到做到的人。把圈子变小&#xff0c;把语放缓&#xff0c;把心放宽&#xff0c;用心做好手边的事儿&#xff0c;该有的总会有的! 目录 一&#xff…

【壹基金儿童服务站瑞金站】寿司DIY亲子活动火热进行

1月13日下午&#xff0c;“大灰狼来啦....”在小朋友们一声声欢快律动的游戏里在象湖新城小区拉开了一场“寿司DIY”亲子主题活动序幕&#xff0c;活动由壹基金儿童服务站瑞金站&#xff08;瑞金赋能公益&#xff09;和爱心商家安心妈妈飞鹤奶粉联合主办。 热身游戏结束后&…

链接全域直播产业经济,天府锋巢直播产业基地10层正式起航

100㎡-400㎡多种类型的办公户型可选 精装全包 拎包入驻 【天府锋巢直播基地】 由德商产投与无锋科技联袂打造 坐落于天府新区核心区域科学城板块 包含电商直播、娱乐直播、跨境直播 多种直播业态的全域直播基地 基地【10层】于12月初全面竣工 招&#xff5c;商 &#xff5c;火&…

Jan, 一个开源 ChatGPT 替代品

Jan 是一个开源 ChatGPT 替代品&#xff0c;可以在您的计算机上 100% 离线运行。 Jan 可以在任何硬件上运行。从 PC 到多 GPU 集群&#xff0c;Jan 支持通用架构&#xff1a; Nvidia GPU&#xff08;快速&#xff09;Apple M 系列&#xff08;快速&#xff09;苹果英特尔Linu…

LLM之RAG实战(十五)| RAG的自动源引文验证技术

​ 在过去的一年里&#xff0c;检索增强生成&#xff08;RAG&#xff09;已经成为一种基于LLM的流行架构&#xff0c;旨在解决在基于知识的LLM最常见的挑战之一&#xff0c;可怕的幻觉。 一、RAG如何解决幻觉&#xff1f; RAG Pipeline包括两个关键组件&#xff1a;&…

基于Java SSM框架实现摄影器材租赁系统项目【项目源码+论文说明】

基于java的SSM框架实现摄影器材租赁系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&a…

Linux(Centos7)安装 jenkins(jdk11+jenkins2.375),并配置JDK,Maven,Git,GitLab

安装步骤 1. JDK11安装2. Maven安装3. git安装4. Jenkins2.375安装4.1 设置中文显示4.2 端口,用户权限修改4.3 插件下载4.4 全局工具配置4.4.1 Maven配置4.4.2 JDK配置4.4.3 Git配置 4.5 系统配置4.5.1 Gitee配置 4.6 构建测试 1. JDK11安装 #下载 yum -y install fontconfig …

怎样获取power shell 的全部可用命令?2/5(篇幅有点长,分成5份)

在power shell 窗口中&#xff0c;有一个获取全部可用命令的命令&#xff1a;get-command&#xff0c;获取到的命令有1640多个&#xff0c;够学习了吧&#xff1f;那么&#xff0c;power shell 命令有哪些类别呢&#xff1f; PowerShell命令可以分为以下几类&#xff1a; Cmdl…

高可用架构去中心化重要?

1 背景 在互联网高可用架构设计中&#xff0c;应该避免将所有的控制权都集中到一个中心服务&#xff0c;即便这个中心服务是多副本模式。 对某个中心服务&#xff08;组件&#xff09;的过渡强依赖&#xff0c;那等同于把命脉掌握在依赖方手里&#xff0c;依赖方的任何问题都可…

开启C++之旅(上):探索命名空间与函数特性(缺省参数和函数重载)

之前浅显的讲解了数据结构的部分内容&#xff1a;数据结构专栏 那么今天我们迎来了新的起点&#xff1a;C的探索之旅 文章目录 1.命名空间1.1引入命名冲突1.2命名空间1.2.1命名空间的定义1.2.2命名空间的使用 2.c的输入与输出3.缺省参数3.1概念3.2缺省参数分类 4.函数重载4.1概…

【深基9.例4】求第 k 小的数#洛谷(MLE)

题目描述 输入 n n n&#xff08; 1 ≤ n < 5000000 1 \le n < 5000000 1≤n<5000000 且 n n n 为奇数&#xff09;个数字 a i a_i ai​&#xff08; 1 ≤ a i < 10 9 1 \le a_i < {10}^9 1≤ai​<109&#xff09;&#xff0c;输出这些数字的第 k k k 小…

吉祥物如何解锁虚拟主持人身份,赋能品牌营销?

在互联网突破时空的整体语境下&#xff0c;一个吉祥物可以解锁虚拟主持人身份&#xff0c;结合动作捕捉技术&#xff0c;活跃于品牌线上线下营销活动场景&#xff0c;让吉祥物虚拟主持人凭借其“萌”、的特征&#xff0c;带给用户亲近感&#xff0c;快速拉近品牌与用户的距离&a…

基于Web的航空航天数字博物馆推荐系统

介绍 项目背景&#xff1a; 航空航天数字博物馆推荐系统是一个基于Web开发的应用&#xff0c;旨在为用户提供一个全面的航空航天领域的数字博物馆体验。通过展品展示、分类筛选和个性化推荐等功能&#xff0c;用户可以更好地了解航空航天知识和文化&#xff0c;并丰富参观体验…

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

开门见山&#xff0c;先抛出一个结论&#xff1a; 任何被提交到远程仓库中的数据&#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…

服务器 conda update 失败解决方法

1. 强制 conda update 租借一台服务器&#xff0c;发现 conda 版本是4.10.3&#xff0c;需要升级&#xff0c;使用了如下命令都没有效果&#xff0c;仍然是一样的版本 conda update conda update --all conda update -n base -c defaults conda最后强制用conda-forge通道更新…

基于Java SSM框架实现学生成绩管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现学生成绩管理系统演示 摘要 学生成绩是高校人才培养计划的重要组成部分&#xff0c;是实现人才培养目标、培养学生科研能力与创新思维、检验学生综合素质与实践能力的重要手段与综合性实践教学环节。而学生所在学院多采用半手工管理学生成绩的方式&#…

linux命令太多记不住吗?怎么办 ?于是推出了这样一套教程。

1.帮助命令 1.1 help命令 #语法格式&#xff1a; 命令 --help #作用: 查看某个命令的帮助信息 # 示例: # ls --help 查看ls命令的帮助信息# netstat --help 查看netstat命令的帮助信息1.2 man命令 #语法格式&#xff1a; man 命令 #作用: 查看某个命令的帮助手册 # 示例: …

Codeforces Round 918 (Div. 4)补题

Odd One Out&#xff08;Problem - A - Codeforces&#xff09; 题目大意&#xff1a;有三个数&#xff0c;其中两个相同&#xff0c;找出不同的那个数。 #include<bits/stdc.h> using namespace std; int main() {int t;scanf("%d",&t);while(t--){vect…

电脑安装 Python提示“api-ms-win-crt-process-l1-1-0.dll文件丢失,程序无法启动”,快速修复方法,完美解决

在windows 10系统安装完python后&#xff0c;启动的时候&#xff0c;Windows会弹出错误提示框“无法启动此程序&#xff0c;因为计算机中丢失了api-ms-win-crt-process-l1-1-0.dll&#xff0c;尝试重新安装该程序以解决此问题。” api-ms-win-crt-process-l1-1-0.dll是一个动态…