git从入门到会用

news2024/12/23 17:09:37

git从入门到大牛

  • 什么是git
    • 理解版本控制
    • 版本控制软件
  • 远程仓库
  • git安装
    • windows 安装
    • git 客户端安装
      • 下载客户端
      • 安装
      • 界面介绍
  • 客户端操作
    • 仓库管理
      • 创建本地仓库
      • 切换本地仓库
      • 删除本地仓库
    • 文件操作
      • 创建文件
      • 修改文件
      • 删除文件
      • 新增/修改/删除 标志
    • 分支管理
      • 创建分支
      • 切换分支
      • 合并分支
    • 标签管理
      • 创建标签
      • 删除标签
    • 远程操作
      • GitHub登录
      • 客户端登录GitHub
      • PUSH文件到远程仓库
  • 命令行操作
    • 创建仓库
    • 克隆clone
    • 配置 config
    • 基本操作
      • add
      • status
      • commit
      • diff
      • rm
      • reset
      • checkout
    • 日志 log
      • git log
      • git blame <file>
    • 远程操作
      • git remote
      • git push
      • git fetch
      • git merge
      • git pull

什么是git

Git 是一个版本控制系统,用于管理代码和其他文本文件的更改。

它可以记录文件的修改历史,允许用户独立开发分支,合并修改,回滚到旧版本等操作。

Git 是一种分散式版本控制系统,意味着每个开发者都可以在本地存储完整的 Git 存储库,并可以与其他开发者协同工作。

Git 是由 Linus Torvalds 开发的,最初是为管理 Linux 内核的开发而创建的。

理解版本控制

简单理解版本控制,比如我们要改一个文件,又担心会改错,就会先备份一下。比如a.txt文件,先复制出来一个文件命名为a1.txt。这样就有2个文件了,即可以保存了历史记录,又可以修改。
版本控制主要有2个优点:

  • 保留了历史记录
  • 如果修改出错可以恢复数据

版本控制软件

大部分的版本控制软件都是基于版本控制的理念开发出来的。
一般可以支持如下几个功能:

  • 文件保存和管理
  • 版本控制
  • 不同版本文件对比
  • 多人协作
  • 提供客户端工具

常见的版本控制软件包括:

  1. Git: 最流行的分布式版本控制系统,用于管理软件源代码和其他类型的文件。

  2. Subversion(SVN): 集中式版本控制系统。

  3. Mercurial(Hg): 另一个分布式版本控制系统。

  4. Perforce: 一种专有的集中式版本控制系统,用于大规模开发环境。

  5. CVS: 一个基于网络的开源版本控制系统,用于管理软件开发项目。

  6. Bitbucket: 面向团队的 Git 代码托管和协作工具。

  7. SourceForge: 开源项目托管服务,提供版本控制工具和协作功能。

  8. GitHub: 基于 Git 的代码托管服务,为开源项目和私有项目提供源代码管理、协作和问题跟踪功能。

  9. GitLab: 另一个基于 Git 的代码托管服务,提供源代码管理、持续集成/持续交付和协作功能。

  10. Apache Subversion: 开源版本控制系统,被广泛用于开源软件和商业项目。

远程仓库

Git 远程仓库是指存储在互联网或局域网上的 Git 仓库,在本地计算机上可以通过网络访问和操作,实现代码共享和协作开发。

远程仓库可以是自己搭建的 Git 服务器,也可以是第三方 Git 托管服务提供商,如 GitHub、GitLab 和 Bitbucket 等。

在远程仓库中,开发人员可以上传自己的代码,查看历史版本,协同开发、合作等操作。

其中最常用的操作是 clone(克隆)和 push(推送)。

通过克隆将远程仓库的代码复制到本地,进行代码修改和提交;通过推送将本地代码提交到远程仓库中,供其他人访问和使用。

除了基本的 clone 和 push 操作外,Git 还提供了其他一些操作,如 pull(拉取)、fetch(抓取)、branch(分支)、tag(标签)等,用于管理远程仓库和本地仓库之间的关系和数据同步。

git安装

git官方网站提供了git的安装包以及客户端工具的安装包,并支持windows mac linux主流系统。

进入网站点击downloads进入下载界面。
请添加图片描述
根据个人电脑系统去下载对应的安装包即可。
请添加图片描述

在这里插入图片描述

windows 安装

双击安装文件,点击下一步。
在这里插入图片描述
在这里插入图片描述
在此处可以选择默认编辑器。
在这里插入图片描述
后面一直点下一步即可。

git 客户端安装

下载客户端

在这里插入图片描述

在这里插入图片描述

安装

双击安装包会自动安装,安装完成会弹出界面。
在这里插入图片描述

界面介绍

  • 首先需要登陆。可以登陆到github,也可以登陆其他企业级git平台,如gitee。

在这里插入图片描述
登录进来之后,可以看到下面界面。提供了三个按钮:

  • clone远程仓库项目
  • 新增本地仓库项目
  • 添加已存在的项目

在这里插入图片描述

客户端操作

仓库管理

创建本地仓库

打开客户端,点击”create a new repository on your hard dive…“;创建本地仓库。
在这里插入图片描述
输入需要填入的内容并选择本地文件夹。
在这里插入图片描述
点击 create repository即可创建本地仓库。

创建之后可以看到如下界面:
在这里插入图片描述
桌面创建了一个命名为test1的文件夹。
在这里插入图片描述

切换本地仓库

再次新建一个本地仓库
在这里插入图片描述
在左侧可以看到一个仓库列表,点击其中一个仓库,即可选择为当前仓库
在这里插入图片描述

删除本地仓库

如果需要删除本地仓库,在左侧列表选择一个仓库点击右键,从右键菜单选择remove。
在这里插入图片描述
如果只是从列表移除,不需要选中 also move this repository to trash。如果需要从磁盘也删除的话,需要。
在这里插入图片描述

文件操作

创建文件

在test1本地仓库文件夹新建一个文件a.txt。
在这里插入图片描述
客户端看到有文件变化。
在这里插入图片描述
点击commit to main ,文件添加到本地仓库。

再新增一个带内容的文本文件,内容是红色的,表示未添加到本地仓库。
在这里插入图片描述

修改文件

修改文本文件内容,查看客户端,可以看到文件修改记录。绿色的地方代表修改后的新内容。
在这里插入图片描述

删除文件

文件删除以后,客户端这里也会发生变化。
在这里插入图片描述

新增/修改/删除 标志

如果文件做了新增/修改/删除的操作,如何一眼可以看出来操作类型,可以通过标志查看,如下:
可以看到

  • 绿色标志:新增
  • 黄色标志:修改
  • 红色标志:删除
    在这里插入图片描述

分支管理

在Git中,分支是指项目代码的不同版本,即在代码库中分出来的不同的代码分支。一般来说,在开发过程中,我们会通过创建不同的分支来进行不同的代码开发和管理。每个分支都是独立的,可以有自己的版本历史和提交记录。

Git分支的主要作用有两个:

  1. 实现不同的工作流程:如果有多人在同一个项目上工作,那么每个人可以在各自的分支上进行工作,避免某个人的代码直接影响到其他人的工作。

  2. 版本控制:通过分支的创建和合并,可以实现不同版本代码的管理。

在Git中,主分支一般是master分支,其他的分支则可以根据需要进行创建。

创建分支

点击客户端 current branch,点击new branch即可创建分支。
在这里插入图片描述
输入分支名称即可。比如我创建一个开发(dev)分支。
在这里插入图片描述
点击create branch之后,会提示是留着当前分支还是切换到新建的分支。
在这里插入图片描述
选择留在当前分支,可以看到这里我们已经创建了一个新的分支。
在这里插入图片描述

切换分支

在分支列表选择要切换的分支,即可切换分支。
切换之后,当前分支就是打对号的这个分支。
在这里插入图片描述
切换到dev分支,在文件夹中新建一个新的文件,并提交。
在这里插入图片描述

合并分支

这个时候,在本地仓库的文件夹发现已经有c.txt文件了。
如果再切换到主分支,发现这个文件没有了。
在这里插入图片描述
那如何把dev分支的内容合并到主分支呢。
切换到主分支,点击按钮 choose a branch to merge into main。
在这里插入图片描述
选择要合并到分支,可以看到下面提示有一个commit需要合并到main分支。
在这里插入图片描述

合并之后,再查看文件夹,发现c.txt文件出现了。
在这里插入图片描述

标签管理

Git标签(Tag)是指向Git仓库中特定提交(commit)的指针。它类似于分支,但标签不会移动,它始终指向一个特定的提交。
标签可用于标记版本发布或重要里程碑,也可用于标识代码库的状态。
标签可以被签出(checkout)到工作目录中,以让用户直接使用已标记过的代码版本。
标签与分支一样,也可以共享、推送和拉取到远程仓库中。

创建标签

对于某一次的提交,可能是对多个文件的多个操作,可以创建标签用来标记着一次提交。

选择一次提交,右键点击create tag…
在这里插入图片描述
输入内容即可。可以看到这一次的提交有一个标签内容。
在这里插入图片描述

删除标签

右键选择commit,点击delete tag 即可删除标签。
在这里插入图片描述

远程操作

上面的操作都是针对本地仓库,我们知道git是分布式版本控制软件,最终的代码还是需要上传到中央仓库。

远程仓库可以是自己搭建的 Git 服务器,也可以是第三方 Git 托管服务提供商,如 GitHub、GITEE 、GitLab 和 Bitbucket 等。

GitHub登录

首先登录GitHub官网https://github.com/。
注册账号并登录。在这里插入图片描述

注册登录后界面如下,在左侧有【新增仓库】的按钮。
在这里插入图片描述
创建一个远程仓库
在这里插入图片描述

客户端登录GitHub

点击File,选择options。
在这里插入图片描述
可以看到有两个登录按钮。
在这里插入图片描述
点击第一个按钮,选择 Continue with browser。
在这里插入图片描述
即可登录成功,登录之后会看到我们已经创建好的远程仓库。
在这里插入图片描述
选择仓库,可以clone远程仓库到本地仓库。
在这里插入图片描述

PUSH文件到远程仓库

在clone远程仓库到本地之后,我们可以创建文件提交到本地仓库。
在这里插入图片描述
提交之后,点击public branch按钮。
在这里插入图片描述
去gitHub查看,文件已经提交到了远程仓库。
在这里插入图片描述

命令行操作

在windows系统,使用命令行,在需要使用命令行的文件夹右键之后,选择 “git base here”即可。

在这里插入图片描述

创建仓库

Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。

git init

使用上面命令,可以使得当前文件夹初始化为Git仓库。

git init 文件夹

使用上面命令可以指定文件夹初始化为git仓库。

初始化仓库后,仓库目录会创建一个.git的文件夹。
在这里插入图片描述

克隆clone

我们使用 git clone 从现有 Git 仓库中拷贝项目。

git clone <repo>

repo : 远程仓库地址

如clone下面的这个项目,可以使用命令:

git clone https://github.com/sudolei/sjky.git

在这里插入图片描述

配置 config

使用git config可以查看当前配置。

git config --list

执行后可以查看到git当前配置信息
在这里插入图片描述
使用下面命令修改当前配置,针对当前仓库配置:

git config -e  

使用下面命令修改当前配置,针对所有仓库配置:

git config -e --global

基本操作

add

git add 命令可将该文件的修改添加到暂存区。
通过运行 git add 命令,你可以告诉 Git 哪些文件的修改应该包含在下一次提交(commit)中。

status

git status 是一个用于查看 Git 仓库当前状态的命令。

git status 命令可以查看在你上次提交之后是否有对文件进行再次修改。

commit

git commit 命令将暂存区内容添加到本地仓库中。

提交暂存区到本地仓库中:
git commit -m [提交内容信息]

diff

git diff 命令比较文件的不同,即比较文件在暂存区和工作区的差异。

git diff 命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。

rm

将文件从暂存区和工作区中删除。

reset

回退版本。
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset 命令语法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]

实例:

$ git reset HEAD^            # 回退所有内容到上一个版本  
$ git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  
$ git  reset  052e           # 回退到指定版本

checkout

切换分支
以下命令允许你从当前分支切换到指定的分支 :

git checkout <branch-name>

日志 log

git log

查看历史提交记录

git blame

以列表形式查看指定文件的历史修改记录

远程操作

git remote

git remote 命令用于用于管理 Git 仓库中的远程仓库。

git remote 命令提供了一些用于查看、添加、重命名和删除远程仓库的功能。

以下是 git remote 命令的常见用法:

  • git remote:列出当前仓库中已配置的远程仓库。
  • git remote -v:列出当前仓库中已配置的远程仓库,并显示它们的 URL。
  • git remote add <remote_name> <remote_url>:添加一个新的远程仓库。指定一个远程仓库的名称和 URL,将其添加到当前仓库中。
  • git remote rename <old_name> <new_name>:将已配置的远程仓库重命名。
  • git remote remove <remote_name>:从当前仓库中删除指定的远程仓库。
  • git remote set-url <remote_name> <new_url>:修改指定远程仓库的 URL。
  • git remote show <remote_name>:显示指定远程仓库的详细信息,包括 URL 和跟踪分支。

git push

git push 命令用于从将本地的分支版本上传到远程并合并。

git fetch

从远程获取代码库。
git fetch是一个常用的命令,用于从远程仓库获取最新的提交历史和分支信息,但并不自动合并或修改本地代码。

当执行 git fetch命令时,它会执行以下操作:

  • 检查远程仓库是否有新的提交或分支。
  • 获取远程仓库的最新提交历史,但不会应用到当前工作目录中。
  • 更新本地仓库的远程分支指针,指向远程仓库的最新提交。
git fetch
git fetch origin
								1. 拉取远程仓库的所有远程分支的最新Commit-ID到「.git/FETCH_HEAD」文件中.
								   若有多个分支则FETCH_HEAD内会有多行数据,首行为 git fetch 时所在分支的同名远程分支
								2. 远程仓库被clone到本地后,被push过代码的远程分支会在「.git\refs\remotes\origin」路径下创建或更新其在本地的副本

git fetch origin release        FETCH_HEAD内只有1行数据,记录的是 git fetch时指定的远程分支的最新Commit-ID

git fetch origin release:dev    基于远程release分支创建本地dev分支(但不会切换到该分支)
								1. 果不存在本地dev分支,则会自动创建一个新的本地dev分支
								2 果存在本地dev分支,并且满足fast forward条件, 则自动合并两个分支,否则,会阻止以上操作
git fetch origin master:branch2
git fetch origin :branch2       省略写法表示:远程仓库分支为默认分支master

git merge

git merge会将多个提交序列合并进一个统一的提交历史。在最常见的使用场景中,git merge被用来合并两个分支。

git pull

git pull 命令用于从远程获取代码并合并本地的版本。

git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写。

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

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

相关文章

【嵌入式 C 常用算法 3 -- 非线性存储结构 二叉树】

文章目录 树概念介绍树相关术语结点子树结点的度结点的层次有序树和无序树森林空树&#xff08;简单了解即可&#xff09; 二叉树二叉树性质满二叉树完全二叉树 二叉树的深度遍历前序遍历中序遍历后续遍历 二叉树的层次遍历二叉树的顺序存储结构二叉树的顺序存储结构C代码实现 …

如何解决DC电源模块的电源噪声问题

BOSHIDA 如何解决DC电源模块的电源噪声问题 在电子设备的设计和制作过程中&#xff0c;电源噪声是一个非常重要的考虑因素。DC电源模块的电源噪声问题是电子设备中普遍存在的问题之一。它不仅会影响设备的性能&#xff0c;还会对设备的寿命和稳定性产生负面影响。因此&#xf…

第二证券:消费电子概念活跃,博硕科技“20cm”涨停,天龙股份斩获10连板

消费电子概念7日盘中再度拉升&#xff0c;到发稿&#xff0c;博硕科技“20cm”涨停&#xff0c;光大同创、波长光电涨超10%&#xff0c;易德龙、向阳科技、得润电子、天龙股份、同兴达等涨停。 博硕科技强势涨停&#xff0c;公司昨日在接受安排调研时表明&#xff0c;公司从上…

第二证券:炒股常识技巧大全?

炒股对许多出资者来说既是一种出资方式&#xff0c;也是一种兴趣。可是&#xff0c;关于初学者来说&#xff0c;炒股可能是一个充溢风险的国际。所以&#xff0c;了解一些炒股的常识技巧关于出资者的长时间成功至关重要。本文将从多个角度分析炒股的常识技巧。 首要&#xff0…

广域网加速的作用:企业为什么需要广域网加速?

由于局域网与广域网之间巨大的带宽鸿沟&#xff0c;通过增加带宽来满足膨胀的流量需求是不切实际的。 并且广域网带宽成本较高&#xff0c;增加广域网带宽对任何企业都意味着巨大的成本负担。这些使得控制 管理广域网带宽使用成为必需。 企业为什么要加速广域网? 对重要的企…

bilibili快速升满级(使用Docker 容器脚本)

部署bilibili升级运行容器脚本 docker run --name"bili" -v /bili/Logs:/app/Logs -e Ray_DailyTaskConfig__Cron"30 9 * * *" -e Ray_LiveLotteryTaskConfig__Cron"40 9 * * *" -e Ray_UnfollowBatchedTaskConfig__Cron"…

『MySQL快速上手』-②-数据库基础

文章目录 1.什么是数据库2.MySQL的基本使用2.1 MySQL的安装2.2 连接MySQL服务器2.3 服务器、数据库与表的关系2.4 使用案例 3.SQL语句分类4.存储引擎4.1 什么是存储引擎4.2 查看存储引擎 1.什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库&#xff1f;文…

批量剪辑神器,专业又好用,支持一站式AI脚本创作、批量剪辑、矩阵分发……

越来越多短视频领域的小伙伴都用上了超级编导批量剪辑这款软件&#xff0c;这也是小编今天要推广给大家的一款批量剪辑工具。 超级编导问世两年多&#xff0c;吸取了同类软件的优点、并结合市场环境、用户反馈&#xff0c;弥补了其他软件的不足&#xff0c;能够一站式完成AI脚…

重写abp框架UserManager类

背景&#xff1a;用过abp框架的应该都知道&#xff0c;abp框架会封装一些成熟的类方法提供给使用者来使用&#xff0c;用来操作 一些内置的实体类&#xff08;类中一些字段设置为了protected internal&#xff09;&#xff0c;比如IdentityUser、IdentityRole等。但是这些封装的…

那些误导消费者的PoE交换机,你知道多少?

PoE交换机是一种具备供电功能的交换机&#xff0c;广泛运用于安保监控和无线覆盖领域&#xff0c;有效避免了对摄像头和无线AP进行繁琐的电源布线。通常来说&#xff0c;对于规模较大的无线覆盖和网络监控项目&#xff0c;大多数人会选择使用支持PoE的交换机。 自PoE供电技术问…

必看!2023年最新MSP开源应用程序指南电子书大揭秘

开源工具有利于节省成本、更好的技术和灵活性已经成为业界的共识。 在理想的世界中&#xff0c;我们用于工作的一切都可以是基于开源的。 但是在生产关键服务的实施和管理中&#xff0c;工程师和业务决策者必须有更好的决策方法来确定哪些工具可以适用于每个需求。 这并不表示…

A. Hit the Lottery

#include<bits/stdc.h> using namespace std; const int N1e55; int n,a[N],res; int main(){scanf("%d",&n);int an/100;n%100;int bn/20;n%20;int cn/10;n%10;int dn/5;n%5;int en;cout<<abcde;return 0; }

APISpace 手机号码归属地API接口案例代码

1.手机号码归属地API产品介绍 APISpace 的 手机号码归属地API&#xff0c;提供全国移动、联通、电信等手机号码归属地查询&#xff0c;上亿条数据囊括最新的170、166、147等号段&#xff0c;更新及时、准确度高。 2.手机号码归属地API详解 2.1 接口请求 请求方式&#xff1a…

知行电子口岸EDI端口介绍

电子口岸或者其他物流企业需要确保能够生成和解析符合交通部要求的EDI数据格式。这可能需要进行一些EDI数据映射工作&#xff0c;以确保数据的正确传输和处理。为了支持此需求&#xff0c;我们的开发人员将这些功能模块集成在电子口岸端口中&#xff0c;这个端口的主要功能是将…

建立TCP连接后发送窗口, 接收窗口, 拥塞窗口的变化情况

参数设置 最大段长MSS1KB, 拥塞窗口初始阈值为32KB, 接收窗口为20KB 变化如下

Unreal UnLua + Lua Protobuf

Unreal UnLua Lua Protobuf https://protobuf.dev/ protobuf wire format&#xff1a;pb 编译到底层的数据协议 https://github.com/starwing/lua-protobuf/blob/master/README.zh.md buffer 处理 lua string 可以当 buffer 用&#xff0c;# len 不会遇到 0 截断&#xf…

【今天放个大招,带你手把手搭建 Jenkins 的分布式构建】

UI 自动化测试代码写完了以后&#xff0c;会放到 Jenkins 这样的持续集成工具上去构建。 如果 Jenkins 平台是搭建在服务器上&#xff0c;会面临 2 个问题&#xff1a; 第一个问题是 UI 自动化测试需要渲染界面&#xff0c;需要消耗大量的 CPU 和内存资源&#xff0c;如果服务器…

埃隆·马斯克的 AI 聊天机器人 Grok 已经上线

昨天&#xff0c;埃隆马斯克 (Elon Musk) 通过他的公司 xAI 推出了一款名为 Grok 的新型人工智能聊天机器人。这款新的聊天机器人将通过 Twitter 更新实时获取世界知识&#xff0c;使其成为最新的对话 AI 系统。 Grok 的独特和基本优势在于它可以通过 &#x1d54f; 平台实时了…

如何在 Vue.js 中引入原子设计?

前言 原子设计是一种创建设计系统的方法&#xff0c;它将用户界面分解为可重用的小组件&#xff0c;即&#xff1a; Atoms 原子Molecules 分子Organisms 生物体Templates 模板Pages 页面 通过遵循模块化设计方法&#xff0c;原子设计可帮助团队创建一致、可缩放且可维护的 …

10-27 maven概念

maven maven的概念模型: 项目对象模型(POM: Project object Model)&#xff0c;一组标准集合: pom.xml 依赖管理系统(Dependency Management System) 项目生命周期(Project Lifecycle) 项目对象模型&#xff1a; 把项目当成一个对象&#xff0c;描述这个项目&#xff0c;使用p…