【通俗易懂】git原理、安装及连接gitlab,github

目录

一、GIT原理【这部分也挺简单,可以看看,如果没时间可以直接跳到第二部分】

SVN与Git的的区别

二、安装Git 

 2.1 获取Git安装程序

2.2 Git安装过程

三、Git连接Gitlab

3.1 gitlab准备工作

3.2 本地计算机准备工作及配置git 

 四、Git连接Github


一、GIT原理【这部分也挺简单,可以看看,如果没时间可以直接跳到第二部分】

Git 是一种分布式版本控制系统,用于管理软件项目的源代码。它是由 Linux 之父 Linus Torvalds 开发的,并已经成为了现代软件开发领域中最流行的版本控制系统之一。

使用 Git 可以追踪代码的历史修改记录,方便团队协作、代码共享和代码重构。Git 的基本工作流程如下:

  1. 在开始编写代码之前,首先需要创建一个 Git 仓库(repository),用于存储代码和版本历史记录。
  2. 在编写代码时,可以通过 git add 命令将更改的文件添加到 Git 的暂存区(staging area)中。
  3. 通过 git commit 命令将暂存区中的更改提交到 Git 仓库中,并生成一个新的版本号(commit hash)。
  4. 如果需要撤销某个提交,可以使用 git revert 命令来创建一个新的提交,该提交将会抵消先前的提交效果。
  5. 如果需要合并不同分支的代码,可以使用 git merge 命令进行合并。
  6. 如果需要查看代码的历史提交记录,可以使用 git log 命令来获取详细信息。
  7. 如果需要将代码推送到远程仓库,可以使用 git push 命令将本地代码推送到远程仓库。
  8. 如果需要从远程仓库中获取代码,可以使用 git pull 命令将远程代码拉取到本地。

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

SVN与Git的的区别

SVN和Git都是版本控制系统,但它们有以下区别:

  1. 分布式 vs 集中式:Git 是一种分布式版本控制系统,而 SVN 是一种集中式版本控制系统。在 Git 中,每个开发者都拥有本地代码库的完整副本,可以离线工作并在不同的工作流程之间自由转换。而在 SVN 中,所有开发者共享同一个中央代码库,并且需要有网络连接才能进行版本控制操作。
  2. 分支管理:Git 在分支管理方面比 SVN 更加强大和灵活。Git 的分支非常轻量级,创建和合并分支也很容易,因此可以轻松实现多人协作和并行开发。而在 SVN 中,分支比较重量级(即创建和合并分支需要花费相对更多的时间和资源),因此往往只用于重要的版本分支。
  3. 版本号:Git 使用 SHA-1 哈希值来标识每个提交,而 SVN 采用递增的数字版本号来标识每个提交。SHA-1 哈希值保证了每个提交的唯一性,而递增版本号则简化了版本控制过程。
  4. 整体性:由于 SVN 是一种集中式版本控制系统,因此所有数据都存储在中央代码库中。如果中央代码库损坏或丢失,可能会导致数据丢失或无法恢复。而 Git 是一种分布式版本控制系统,每个开发者都拥有完整的代码库副本,保证了代码的整体性和可靠性。
  5. 性能:Git 比 SVN 更快,特别是在处理大型仓库、分支合并以及比较代码差异时。Git 使用基于内容的哈希算法来检测文件是否修改,而 SVN 则需要检查文件的元数据(如时间戳和文件大小)来确定是否修改。

总之,虽然 SVN 和 Git 都是版本控制系统,但它们的设计和实现方式存在较大差异,开发人员应根据自身需求选择最适合的版本控制系统。

二、安装Git 

 2.1 获取Git安装程序

        到Git官网下载,网站地址:https://git-scm.com/downloads,如下图

  因为我们是用Windows系统上的浏览器访问的,Git官网自动之别到了我使用的操作系统,所以右侧直接显示下载使用Windows系统的最新版本(如果识别错误,可以在中间选择系统),点击即可下载。我下载的是 2.24.0 for Windows,文件名称是“Git-2.24.0.2-64-bit.exe”。下载到电脑上之后,鼠标双击这个文件即可进入安装过程。

2.2 Git安装过程

  双击看到的第一个界面如下图:

01、使用许可声明

  点击“Next”进入下图页面:

02、选择安装路径

  在输入框内输入想要安装到的本机路径,也就是实际文件夹位置,或点击“Browse...”选择已经存在的文件夹,然后点击“Next”按钮继续,进入下图界面:

03、选择安装组件

  上图红框内的选项是默认勾选的,建议不要动。绿色框1是决定是否在桌面创建快捷方式的。绿色框2是决定在所有控制台窗口中使用TrueType字体和是否每天检查Git是否有Windows更新的。这些根据自己需要选择。

  点击“Next”按钮进入下图界面:

04、选择开始菜单页

  这个界面是创建开始菜单中的名称,不需要修改,直接点“Next”按钮继续到下图的界面:

05、选择Git文件默认的编辑器

  这个页面是在选择Git文件默认的编辑器,很少用到,所以默认Vim即可,直接点“Next”按钮继续到下图的界面:

06、调整您的PATH环境

  这个界面是调整您的PATH环境。

  第一种配置是“仅从Git Bash使用Git”。这是最安全的选择,因为您的PATH根本不会被修改。您只能使用 Git Bash 的 Git 命令行工具。但是这将不能通过第三方软件使用。

  第二种配置是“从命令行以及第三方软件进行Git”。该选项被认为是安全的,因为它仅向PATH添加了一些最小的Git包装器,以避免使用可选的Unix工具造成环境混乱。

您将能够从Git Bash,命令提示符和Windows PowerShell以及在PATH中寻找Git的任何第三方软件中使用Git。这也是推荐的选项。

  第三种配置是“从命令提示符使用Git和可选的Unix工具”。警告:这将覆盖Windows工具,如 “ find 和 sort ”。只有在了解其含义后才使用此选项。

  我选择推荐的选项第二种配置,点击“Next”按钮继续到下图的界面:

07、选择HTTPS后端传输

  这个界面是选择HTTPS后端传输。

  第一个选项是“使用 OpenSSL 库”。服务器证书将使用ca-bundle.crt文件进行验证。这也是我们常用的选项。

  第二个选项是“使用本地 Windows 安全通道库”。服务器证书将使用Windows证书存储验证。此选项还允许您使用公司的内部根CA证书,例如通过Active Directory Domain Services 。

  我使用默认选项第一项,点击“Next”按钮继续到下图的界面:

08、配置行尾符号转换

  这个界面是配置行尾符号转换。

  第一个选项是“签出Windows风格,提交Unix风格的行尾”。签出文本文件时,Git会将LF转换为CRLF。提交文本文件时,CRLF将转换为LF。对于跨平台项目,这是Windows上的推荐设置(“ core.autocrlf”设置为“ true”)

  第二个选项是“按原样签出,提交Unix样式的行尾”。签出文本文件时,Git不会执行任何转换。 提交文本文件时,CRLF将转换为LF。对于跨平台项目,这是Unix上的建议设置(“ core.autocrlf”设置为“ input”)

  第三种选项是“按原样签出,按原样提交”。当签出或提交文本文件时,Git不会执行任何转换。不建议跨平台项目选择此选项(“ core.autocrlf”设置为“ false”)

  我选择第一种选项,点击“Next”按钮继续到下图的界面:

09、配置终端模拟器以与Git Bash一起使用

  这个界面是配置终端模拟器以与Git Bash一起使用。

  第一个选项是“使用MinTTY(MSYS2的默认终端)”。Git Bash将使用MinTTY作为终端模拟器,该模拟器具有可调整大小的窗口,非矩形选择和Unicode字体。Windows控制台程序(例如交互式Python)必须通过“ winpty”启动才能在MinTTY中运行。

  第二个选项是“使用Windows的默认控制台窗口”。Git将使用Windows的默认控制台窗口(“cmd.exe”),该窗口可以与Win32控制台程序(如交互式Python或node.js)一起使用,但默认的回滚非常有限,需要配置为使用unicode 字体以正确显示非ASCII字符,并且在Windows 10之前,其窗口不能自由调整大小,并且只允许矩形文本选择。

  我选择默认的第一种选项,点击“Next”按钮继续到下图的界面:

10、配置配置额外的选项

  这个界面是配置配置额外的选项。

  第一个选项是“启用文件系统缓存”。文件系统数据将被批量读取并缓存在内存中用于某些操作(“core.fscache”设置为“true”)。 这提供了显著的性能提升。

  第二个选项是“启用Git凭证管理器”。Windows的Git凭证管理器为Windows提供安全的Git凭证存储,最显着的是对Visual Studio Team Services和GitHub的多因素身份验证支持。 (需要.NET Framework v4.5.1或更高版本)。

  第三个选项是“启用符号链接”。启用符号链接(需要SeCreateSymbolicLink权限)。请注意,现有存储库不受此设置的影响。

  我勾选默认的第一、第二选项,点击“Next”按钮继续到下图的界面:

11、配置实验选项

  这个界面是配置实验选项。

  启用实验性的内置添加 -i / -p。(新!)使用实验性的内置交互式add(“ git add -i”或“ git add -p”)。这使其速度更快(尤其是启动!),但尚未被认为是可靠的。

  默认不勾选,直接点击“Next”按钮继续到下图的安装进度界面:

12、安装进度指示

  安装进度结束之后,会出现下图的完成Git安装向导界面:

13、安装完成

  在这个界面,可以勾选是否启动启动Git Bash和是否查看发行说明,然后点“Finish”按钮退出安装界面。

14、启动测试

  到此,Git的安装完成,可以在开始菜单中看到Git的三个启动图标(Git Bash、Git CMD(Deprecated)、Git GUI)。

Git Bash,是Git配套的一个控制台,点击打开如下图:

Git CMD(Deprecated),是通过CMD使用Git(不推荐使用),点击打开如下图:

Git GUI,是Git的可视化操作工具,点击打开如下图:

 

三、Git连接Gitlab

3.1 gitlab准备工作

1、在GitLab上创建一个账户:如果您还没有GitLab账户,请在GitLab官网(https://gitlab.com/users/sign_in)上创建一个账户。

2、创建一个新的Git仓库:登录到您的GitLab账户,然后在页面上创建一个新的Git仓库。请注意Git仓库的名称和位置,因为这些信息将用于配置本地Git。

3.2 本地计算机准备工作及配置git 

1、在计算机上创建个文件夹(用于专门存/传到gitlab或github代码,例如GitCode),进入文件夹内,右键打开Git Bash终端,并输入以下命令以设置您的Git用户名和电子邮件地址(最好和gitlab用相同的用户名和电子邮件地址,这样方便记。例如我的电子邮件地址是xxx@qq.com)

git config --global user.name "BosserWang"
git config --global user.email "xxxxx@xxx.com"

(BosserWang是用户名,xxxxx@xxx.com是电子邮箱,我的是qq邮箱,大家根据自己的信息自行修改)

 2、生成SSH密钥:输入以下命令以生成SSH密钥:

ssh-keygen -t rsa -C "xxxxx@xxx.com"

 这里的地址和上面的电子邮箱地址是同一个地址。

然后一路回车即可。

 3、添加SSH密钥到GitLab:使用以下命令将SSH密钥添加到GitLab:

cat ~/.ssh/id_rsa.pub

 (~表示用户目录,比如我的windows就是C:\Users\Administrator.DESKTOP,并复制下面红色框内的内容)

4、打开gitlab,把ssh添加进去。

 5、进入计算机上创建的文件夹(我的是GitCode),右键选择->Git Bash Here 通过git init命令把这个目录变成Git可以管理的仓库(多了这么一个文件.git)

git init

 6、克隆项目

git clone 项目地址

 7、提交代码到Gitlab

把代码文件全部copy到刚刚克隆的项目文件夹中,右键选择->Git Bash Here 。

 第一步,用命令git add告诉Git,把文件添加到仓库:

git add 文件名 或者 git add .

(“git add“后加“.”则添加全部文件,也可以加"*.txt"表示添加全部需要提交的txt文件 )

执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

第二步,用命令git commit告诉Git,把文件提交到仓库:

git commit -m "20231121"

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。

git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)。

git commit -m "增加了一张地铁图"

为什么Git添加文件需要addcommit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件。

最后输入以下命令,提交到gitlab

git push origin master 或者 git push 

git push origin master的意思就是上传本地当前分支代码到master分支。git push是上传本地所有分支代码到远程对应的分支上。


若在执行上述操作的时候,如果报错:

On branch master
nothing to commit, working tree clean
To git@gitlab.com:<your_username>/<your_repository>.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@gitlab.com:<your_username>/<your_repository>.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.


代表您本地的分支与远程分支的提交历史不一致,所以需要先将远程分支的更改合并到本地分支,然后再将本地更改推送到远程分支。

要解决这个问题,请按照以下步骤操作:

运行以下命令拉取远程分支的更改:

git pull origin master


这将合并远程分支的更改到您本地的分支。

如果在合并过程中出现冲突,请解决冲突并提交更改。

然后再次运行以下命令将更改推送到远程分支:

git push origin master


这样就能够成功地将更改推送到远程分支了。

如果以上还报错,如:

! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@gitlab.com:<your_username>/<your_repository>.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.


这个错误提示表明,远程分支比您本地分支更新,因此在推送更改之前,您需要先将远程分支上的更改合并到本地分支中。

为了解决此问题,您可以执行以下操作:

运行以下命令来拉取远程分支的更改:

git pull --rebase origin master


这将从远程分支下载并合并最新的更改,并使您的本地分支保持最新状态。

如果在合并过程中出现冲突,请解决冲突并提交更改。

然后再次运行以下命令将更改推送到远程分支:

git push origin master


就可以解决问题了!
 

 四、Git连接Github

连接github的操作和连接gitlab一摸一样。不再重述,如有问题,可以在评论区提问。

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

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

相关文章

【EI会议征稿】第七届电子器件与机械工程国际学术会议(ICEDME 2024)

第七届电子器件与机械工程国际学术会议&#xff08;ICEDME 2024&#xff09; 2024 7th International Conference on Electron Device and Mechanical Engineering 第七届电子器件与机械工程国际学术会议&#xff08;ICEDME 2024&#xff09;将于2024年3月15-17日在山西太原召…

Sui生态多家协议上线流动质押,兼顾收益与灵活性

在Sui上&#xff0c;流动质押协议允许DeFi用户质押SUI&#xff0c;并获得可交易或用于其他DeFi活动的流动质押标记token。这一过程绕过了传统质押中验证节点锁定token的问题。用户可以通过Sui的权益证明机制&#xff08;PoS&#xff09;确保网络的安全&#xff0c;同时参与生态…

微波功率计/频率计-87234系列USB峰值/平均功率计

仪器仪表 苏州新利通 87234系列 USB峰值/平均功率计 频率范围覆盖&#xff1a;50MHz&#xff5e;67GHz 一款基于USB 2.0接口的二极管检波式宽带功率测量仪器 国产思仪功率计 01 产品综述 87234D/E/F/L USB峰值/平均功率计是一款基于USB 2.0接口的二极管检波式宽带功率测…

GNSS技术在交通运输领域的创新应用

全球导航卫星系统&#xff08;GNSS&#xff09;技术在交通运输领域发挥着越来越重要的作用&#xff0c;为汽车导航、航空、海运等交通模式提供了精准的定位和导航服务。本文将深入探讨GNSS技术在交通运输领域的应用&#xff0c;以及它对交通管理、安全性和效率的积极影响。 一、…

嵌入式开发、C++后台开发、C++音视频开发怎么选择?

嵌入式开发、C后台开发、C音视频开发怎么选择&#xff1f; 在日常生活中&#xff0c;视频类应用占据了我们越来越多的时间&#xff0c;各大公司也纷纷杀入这个战场&#xff0c;不管是抖音、快手等短视频类型&#xff0c;虎牙、斗鱼等直播类型&#xff0c;腾讯视频、爱奇艺、优酷…

vue中使用echarts渐变柱状图 Cannot read properties of undefined (reading ‘graphic‘)解决方法

在使用渐变颜色时报错&#xff0c;Cannot read properties of undefined (reading ‘graphic’) echarts也下载了&#xff0c;引入了&#xff0c;就是报错&#xff0c;用不了new charts&#xff0c; 结果换了一个版本号就可以了&#xff0c;本来用的"echarts": "…

机器学习介绍与分类

随着科学技术的不断发展&#xff0c;机器学习作为人工智能领域的重要分支&#xff0c;正逐渐引起广泛的关注和应用。本文将介绍机器学习的基本概念、原理和分类方法&#xff0c;帮助读者更好地理解和应用机器学习技术。 一、机器学习的基本概念 机器学习是一种通过从数据中学…

leetcode——设计循环队列

设计循环队列 这个题目在这里小编只分享一个解题思路&#xff0c;因为还有一个思路小编还在尝试&#xff0c;一直过不了&#xff0c;还在这里不断尝试&#xff0c;等我试出来的时候我在分享给大家&#xff0c;首先我们在这里给出的是数组的形式&#xff0c;后面在分享单链表的思…

PHP手动为第三方类添加composer自动加载

有时候我们要使用的第三方的类库&#xff08;SDK&#xff09;没用用composer封装好&#xff0c;无法用composer进行安装&#xff0c;怎么办呢&#xff1f;&#xff1f;&#xff1f; 步骤如下&#xff1a; 第一步、下载你需要的SDK文件包&#xff0c;把它放在vendor目录下 第二…

mricorn 手动勾画ROI并保存为模版的方法步骤

mricorn软件手动勾画ROI&#xff1a; 这里拿一个做了切除手术的癫痫病人举例子&#xff0c;我们需要把切除区域勾画出来并保存成切除的模版。 1、将图像导入到mricorn中 2、逐层勾画ROI并填充 比较方便的是从切除区域的起始层进行勾画&#xff0c;这里为了方便展示只勾画中间…

重装系统后如何恢复以前的文件?详细教程大揭秘!

在日常生活中&#xff0c;我们可能会遇到各种计算机问题&#xff0c;其中最严重的问题之一就是需要重装系统。在重装系统之前&#xff0c;我们通常需要考虑一个问题&#xff1a;重装系统后还能恢复以前的文件吗&#xff1f; 首先&#xff0c;我们需要明确一点&#xff0c;重装…

家政保洁预约小程序app开发特点有哪些?

家政预约服务小程序APP开发的特点介绍&#xff1b; 1. 低成本&#xff1a;用户通过手机APP下单&#xff0c;省去了中介费用&#xff0c;降低了雇主的雇佣成本。 2. 高收入&#xff1a;家政服务人员通过手机APP接单&#xff0c;省去了中介费用&#xff0c;从而提高了服务人员的…

AI越来越强,法律人是“躺”还是“卷”?

要点&#xff1a; 一、AI&#xff1a;到底是风口还是泡沫&#xff1f; 二、法律人为什么要学会用AI&#xff1f; 三、法律人为何用不好AI&#xff1f; 四、法律人的明天会怎样&#xff1f; 五、人类的明天会怎么样&#xff1f; 六、不确定的未来&#xff1a;“躺”还是“…

转行数据分析,一定要学会做BI报表

不开玩笑&#xff0c;现在的大趋势是做BI数据分析&#xff0c;所以如果是想要入行数据分析的&#xff0c;那么就需要学会做BI报表。现在很多的企业都在上BI&#xff0c;数据分析老人们也都在积极地学习使用BI&#xff0c;很大程度上是因为BI报表具备了无可替代的三大优势。 BI…

Ubuntu18.04安装LeGO-LOAM保姆级教程

系统环境&#xff1a;Ubuntu18.04.6 LTS 1.LeGO-LOAM的安装前要求&#xff1a; 1.1 ROS安装&#xff1a;参考我的另一篇博客Ubuntu18.04安装ROS-melodic保姆级教程_灬杨三岁灬的博客-CSDN博客文章浏览阅读168次。Ubuntu18.04安装ROS-melodic保姆级教程https://blog.csdn.net/…

C语言——深入理解指针——函数指针

一、函数指针变量 1.1 函数指针变量的创建 什么是函数指针变量呢&#xff1f; 函数指针变量应该是用来存放函数地址的&#xff0c;未来通过地址能够调⽤函数的。 那么函数是否有地址呢&#xff1f; 我们做个测试&#xff1a; #include <stdio.h> void test() {print…

解决Python中文乱码问题的策略与技巧

目录 引言 一、解决Python中文乱码问题的策略 1、使用合适的编码方式 2、设置Python解释器的编码环境变量 3、使用合适的库和框架 4. 对数据进行正确的处理和格式化 5、使用合适的打印和显示方式 6. 考虑使用多语言支持 二、解决Python中文乱码问题的技巧 1、避免使用…

Chrome和chromedriver版本不匹配导致的UI自动化测试无法运行的问题

今天&#xff0c;遇到一个小问题&#xff0c;本来跑的好好UI自动化测试脚本突然不好使了&#xff0c;期初怀疑是页面元素有调整导致脚本出现异常无法正常执行&#xff0c;经排查后发现近期页面没有任何调整。 这下头大了&#xff0c;啥也没改&#xff0c;怎么好好的脚本不能跑…

Python+Selenium自动化测试项目实战

说明&#xff1a;本项目采用流程控制思想&#xff0c;未引用unittest&pytest等单元测试框架 一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码&#xff0c;验证是否登录成功&#xff1b; 2.输入格式正确的用户名和不…

UE5 操作WebSocket

插件&#xff1a;https://www.unrealengine.com/marketplace/zh-CN/product/websocket-client 参考&#xff1a;http://dascad.net/html/websocket/bp_index.html 1. 安装Plugings 2.测试websocket服务器 http://www.websocket-test.com/ 3.连接服务器 如果在Level BP里使用&a…