首页 > 其他分享 >Git超详解(Git、码云、GitLab)

Git超详解(Git、码云、GitLab)

时间:2024-12-23 14:59:42浏览次数:9  
标签:文件 git 代码 GitLab 码云 Git master 分支

Git

【Git】SSL certificate problem: unable to get local issuer certificate错误的解决办法

git错误SSL certificate problem: unable to get local issuer certificate

【Git】SSL certificate problem: unable to get local issuer certificate错误的解决办法

【IntelliJ IDEA插件】值得推荐的Idea几十大优秀插件、神级超级牛逼插件推荐(自用,真的超级牛逼)

一.Git概述

  • Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目,就是管理代码的

1.1版本控制

  • 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统

  • 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换

1.2 版本控制工具

  • 集中式版本控制

    • 常见工具:CVS(最早、开源、免费),SVN(开源、免费,目前用的最多),VSS(集成在Visual studio中)…

    • 描述:我们比较熟悉的SVN是集中式的版本控制系统,回想一下在使用svn时,每次干活之前,需要先从中央服务器(服务端)取出最新的版本,然后开始工作,干完活了,工作完后推送给中央服务器。此时的中央服务器就好比是一个图书馆,如果你要修改一本书,需要先从图书馆借出来,然后回到自己家修改,改完之后,需要在送回到图书馆。 img

  • 分布式版本控制

    • 常见工具:git(免费、开源)、 Mercurial(轻量级) 、Monotone(免费)…

    • 描述:分布式版本控制系统是没有“中央服务器”,每个人的电脑上都是一个完整的版本库,工作的时候,不再需要联网。开始工作前,在客户端克隆出完整的代码仓库,然后就可以在家、在公交车等等随心所欲地修改代码并提交了,提交到本地电脑,等到有网的时候就可以一次性地将本地仓库推送到远端仓库(临时中心服务器)中,这样一来,每个人都可以独立进行改动资料,并且所有的改动都是在完整资料信息的环境下进行的。 img

1.3 Git简史

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。

Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:

  • 速度

  • 简单的设计

  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)

  • 完全分布式

  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统(参见 Git 分支)。

1.4 Git工作机制

  • 工作区:就是一个存放代码的文件夹

  • 工作区代码从工作区添加到暂存区临时存储,此时还是可以对其做删除操作的,之后再提交到本地库,一旦生成历史版本,代码就删不掉了,之后还可以把代码推送(push)到远程库

image-20230110084831560

1.5 代码托管中心

  • 代码托管中心是基于网络服务的远程代码仓库,一般我们称它为远程库

image-20230110085152975

二.Git的安装

  • 网站

  • 找对应的64位操作系统,下拉获取最新版

三.Git常用命令

  • 不管是什么时候的修改,修改之后一定要add和commit,不然白修改

image-20230110090134869

  • 输入命令的前几个字母以后,按两下tab键,会自动补全,和Linux一样

3.1 设置用户签名

image-20230110090208680

  • 设置用户签名:签名的作用是区分不同操作者,用户的签名在每个版本的提交信息中都能看到,为了确认本次提交是谁做的,Git首次安装必须设置一下用户签名,否则无法提交代码。

    • 注意:这里的用户签名和将来登录GitHub(或者其他代码托管平台)的账号无任何关系。

  • 想要查看改写的用户名和邮箱路径:‪C:\Users\阳光.gitconfig

image-20230111112301473

3.2 初始化本地库

  • git init

  • 要让git管理你的目录,需要让git获得管理权

  • 要想让git的黑框框进到项目目录里面,直接在对应文件夹页面右键打开git客户端就可以直接进入,不用输入盘符

  • 输入git init之后在当前文件夹下会创建一个隐藏的git文件夹

  • 直接输入查看命令ll无法看到隐藏文件,输入ll -a即可查看

image-20230110091429909

3.3 查看本地库状态

  • git status

image-20230110143342472

  • vim hello.txt进入文件 按下i进入insert编辑模式 输入完毕后 按shift+;输入wq退出 在读取模式按下yy是复制当前行,按p是粘贴

image-20230110144229332

  • 红色表示已经有了一个文件但是这个文件没有被git追踪,就是还没有被添加到暂存区里面

3.4 本地文件添加到暂存区里面

  • 在windows系统里面,换行符是CRLF,但是在Linux里面是LF,所以提示警告要更改

image-20230110145137071

  • 添加之后再次查看状态,发现之前的红色变成了绿色代表git已经追踪到文件,文件存在于暂存区里面

image-20230110145518964

  • 如果要删掉暂存区里面的文件需要用上图提示到的命令,注意这个删除只是把暂存区里面的删掉,工作区还是有的

image-20230110145902951

3.5 将暂存区的文件提交到本地库

  • git commit -m "日志信息" 文件名

    • 日志信息就是自己想写的话

  • master后面的七位数字就是版本号

image-20230110150617462

  • 查看版本信息的命令 git reflog

  • 查看详细版本信息的命令 git log

    • 这个命令可以看到作者和提交日期

    • 可以看到黄色的一长串的完整版本号

image-20230110150842419

3.6 修改文件

  • vim命令 快捷键 esc状态下shift+zz可以快速保存并退出

image-20230110151455278

  • 文件变红表示这个文件已经被修改但是还没有添加到暂存区

  • 修改多次,但是本地工作区只有一个文件,且是已经被修改,因为底层是使用指针控制的

image-20230110152233855

image-20230110152250489

3.7 历史版本

3.7.1 查看历史版本
  • 查看精简 版本信息的命令 git reflog

  • 查看详细版本信息的命令 git log

image-20230110152605345

3.7.2 版本穿梭
  • 切换版本命令

  • git reset --hard 版本号

  • 可以看到切换之后指针发生了变化

image-20230110152841682

  • 一旦版本穿梭之后,本地工作区的文件也会发生修改,底层原理是指针,master的指针指向修改的版本,head的指针随之修改指向master

image-20230110154227197

四.Git分支

4.1 什么是分支

image-20230110154938016

  • 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

image-20230110155420393

  • 热修分支就是紧急修改

4.2 分支的好处

  • 同时并行多个分支,提供工作效率

  • 各个分支开发过程中如果一个分支开发失败,不会对其他分支产生影响,失败的分支删除重新开始即可

4.3 分支的操作

image-20230110155706771

4.4 切换分支

  • 注意看后方蓝字 从master分支切换到了hot-fix分支

  • git branch -v 是查看所有分支

  • git branch 分支名 是创建分支

image-20230110165912162

4.5 修改分支

  • 在hot-fix上修改代码hello.txt

  • 直接vim hello.txt

  • 之后:wq就可以

  • 注意这次修改并没有影响到master分支的hello.txt文件,要想影响更新,就要合并分支

4.6 合并分支(正常合并)

  • 注意立场:要想把别的分支的合并到现在的分支,需要先站在现在的分支之上

  • 要想把hot-fiix分支合并到master分支上,需要自己先站在master分支上

image-20230110161457264

  • hot-fix分支的代码是基于master分支修改的,合并之后显示的就是hot-fix修改之后的代码,所以并没有发生冲突。

4.7 合并分支(冲突合并)

  • 冲突合并就是master也改了,hot-fix也改了,而且修改的是同一个文件的同一位置(相同行或者相邻行)或者一个人改动了那些被另一个人删除了的代码,此时git会报错,git无法替我们决定该保留哪一个,需要我们人为决定

  • 操作

  • 先切换分支到热修并且更改和提交hello

image-20230110163517198

  • 再切换到master分支并尝试合并,但是报错,有冲突

image-20230110163603570

image-20230110163636894

  • 此时需要在当前状态下修改文件并添加和提交

image-20230110163738212

  • 注意提交冲突文件时不能加文件名,因为git不知道提交的是哪一个分支的文件,只可以写相关版本信息

image-20230110163853430

  • 合并只会修改主场分支的文件,不会修改被合并的分支的文件,这里hot-fix被合并到master,但是hot-fix分支的文件不会被修改

image-20230110164107859

  • 合并分支底层玩的也是指针

  • head指向master,master指向版本

五.Git团队协作机制

5.1 团队内协作和跨团队协作

  • 团队内协作

在这里插入图片描述

  • 跨团队协作

在这里插入图片描述

5.2 团队内协作

5.2.1 邀请加入团队
  • 选择邀请合作者

image-20230111090233823

image-20230111090256915

  • 需要被邀请成员复制邀请函

image-20230111090706298

  • 然后让被邀请成员在地址栏里复制邀请函地址

image-20230111090803866

image-20230111090836929

  • 之后被邀请成员就可以推送拉取仓库的代码了

5.3 跨团队协作

  • 可以把别人的代码叉一份给自己的仓库,然后修改即可,就是进入别人的仓库之后,点击右上角的fork

  • 可以用命令克隆一份别人的代码

  • 自己修改之后,点击pull request发送让被复制人拉取的请求

  • 之后点击Merge pull request把别人写的代码合并到自己的代码

  • image-20230111105527559

六.GitHub操作

image-20230110183413239

最简单的方式流畅访问GitHub

6.1 创建远程仓库

6.2 远程仓库操作

  • 远程库链接 在绿色的Code下

image-20230110234811488

6.2.1 创建远程库别名
  • 连接太长记不住就创建别名

image-20230110183823605

  • git remote -v 查看有哪些别名

  • git remote add 别名 远程库链接

image-20230110185442946

image-20230110185454532

6.2.2 推送本地库代码到远程库
  • git push 别名(也可以直接放链接) 分支

  • 推送的最小单位是分支,命令表示把分支推送到远程库里

  • 这里推送的时候链接可以换成别名,而且会弹出小窗,提示要绑定账号,同意即可

image-20230110184717279

  • windows10利用Git直接向Github推送文件与文件夹

    • 首先到指定文件夹内,右键调出git bush here窗口

    • 输入git init初始化本地库

    • 把所有文件使用 git add . (注意有点表示全部)

    • 之后再提交到本地库 使用 git commit -m "版本信息" (之后直接回车,表示全部推送)

    • 创建github远程库

    • 给github用git remote add 别名 链接起别名

    • 之后用git push 别名 master即完成推送

6.2.3 拉取远程库到本地库
  • 命令 git pull 远程库名或地址 分支名(master)

6.2.4 克隆远程库到本地
  • 在别的库下打开git bush here

  • 然后输入命令 git clone + 网址

  • 注意克隆不需要init初始化,因为当初创建的要被克隆的库是公开的

image-20230110235451176

image-20230110235615931

  • 个人理解:拉取,你本地已经有文件了,需要更新最新的,克隆,本地完全没有文件,需要所有的文件

  • 小结:clone会做如下操作:

    • 1.拉取代码

    • 2.初始化本地仓库

    • 3.创建别名 orgin

6.2.5 SSH免密登录
  • 在用户目录下创建.ssh目录

 ssh-keygen -t rsa -C Libai@Libaiqq.com
  • 然后点击三下回车

image-20230111112503256

  • .pub是公钥

  • 无后缀的是私钥

image-20230111112552712

  • 之后输入命令进入目录找到公钥

image-20230111113136176

  • 把公钥复制到git的账号的setting的SSH and KEY

image-20230111113218911

  • 一旦添加之后,windows链接git账号就不需要反复输入账号和密码了

  • 下面测试连接,用一个pull命令拉取git仓库的代码

    • 注意输入完pull命令按回车之后,会提示询问是否连接,要输入yes,才能继续下一步拉取

image-20230111113654749

七.IDEA集成Git

7.1 配置Git忽略文件(废弃)

  • 白框里面的文件都不想push,因为这些文件与项目的实际功能无关,不参与服务器上部署运行,把他们忽略可以屏蔽IDE工具之间的差异

image-20230111143625975

  • 忽略步骤

1.创建忽略文件 xxx.ignore(前缀名随便起,建议是git.ignore),这个文件建议放在用户的家目录下,为了便于让 ~/.gitconfig文件引用,建议也放在用户家目录下

2.git.config文件模板内容如下

  • 在家目录下新建配置文件,更改后缀名为ignore

image-20230111144747126

  • 再git.config文件中引用文件,注意把路径复制过来的反斜杠改成正斜杠

image-20230111144842273

  • 打开IDEA配置一下Git

  • 右边红框里面是git安装目录下bin目录下的git.exe

image-20230111145108827

image-20230111145229522

  • 以下为推荐方式(已更新)

 ### Example user template template
 ​
 # IntelliJ project files
 .idea
 *.iml
 out
 gen
 HELP.md
 target/
 !.mvn/wrapper/maven-wrapper.jar
 !**/src/main/**
 !**/src/test/**
 ​
 ### STS ###
 .apt_generated
 .classpath
 .factorypath
 .project
 .settings
 .springBeans
 .sts4-cache
 ​
 ### IntelliJ IDEA ###
 .idea
 *.gitignore
 *.iws
 *.iml
 *.ipr
 .gitignore
 ​
 ### NetBeans ###
 /nbproject/private/
 /nbbuild/
 /dist/
 /nbdist/
 /.nb-gradle/
 build/
 ​
 ### VS Code ###
 .vscode/
 ​
  • 注意把忽略文件放到项目文件夹下,在项目内表示为把.gitignore直接拖到左上角项目上里

  • 第二种方法:安装插件之后在项目名上右键,选择new 选择.ignore再选择第一个example user template

    image-20230111171807714

7.2 IDEA初始化本地库和项目的添加提交

  • 找到IDEA上方的VCS(version control settings版本控制工具)

image-20230111145540986

image-20230111145658715

image-20230111145819838

  • 找到项目的根目录,之后直接点击OK,此时在项目的目录下面出现了.git文件夹,说明项目被IDEA初始化了

image-20230111145851937

  • 此时发现项目名字全部变红,表示项目还没有被添加到暂存区

image-20230111145959237

  • 此时先要把某些文件添加到暂存区,只要右键找到Add即可

image-20230111150137163

  • 提交之后发现文件名全黑色

image-20230111172044769

7.3 切换版本

  • 修改已经提交的代码之后,如果想要再次提交,只需要点commit,不用点add,版本切换点击左下角的Git,右键要切换的版本然后checkout就可以

image-20230111204347354

7.4 创建分支和切换分支

  • 创建分支第一种找法

image-20230111204625340

  • 创建分支第二种找法

image-20230111204716716

  • 切换分支,还是右下角

image-20230111204824548

7.5 合并分支(正常合并)

  • hot-fix分支修改并commit

image-20230111205221686

  • 切换到master分支,并合并hot-fix分支

image-20230111205332395

  • 合并成功

image-20230111205425709

7.6 合并分支(冲突合并)

  • hot-fix分支和master分支都修改了同一行,此时在master分支上点击合并

image-20230111205724707

  • 出现conflict弹窗,手动点击merge后,出现弹窗

image-20230111205909259

image-20230111210011399

image-20230111210048254

  • 合并成功

image-20230111210212802

八.IDEA集成GitHub

8.1 设置GitHub账号

image-20230111211307840

image-20230111211400703

  • 授权成功

image-20230111211420989

8.2 分享工程到GitHub

  • 注意找到选项框找到对应的地方

image-20230111211835137

  • share

image-20230111212006592

image-20230111212355378

  • 如果项目在github有了,但是里面的代码没成功上传,需要右下角master里面有push,点击一下就可以了

8.3 push推送本地库到远程库

  • push方法一

image-20230111212634471

  • push方法二

image-20230111212653289

image-20230111212924451

image-20230111212952405

8.4 pull拉取远程库到本地

  • pull是把直接在仓库修改了的代码或者别人仓库的代码拉取到自己的本地库

  • 在远程库修改代码之后

image-20230111213250221

image-20230111213409155

image-20230111213500415

  • 拉取的时候尽量不要改本地的代码,否则还涉及到手动解决合并冲突的问题

image-20230111213710090

image-20230111213734756

8.5 clone克隆远程库到本地

  • 已经把代码push到GitHub之后就相当于已经有了代码备份,需要的时候可以直接从远程库克隆

  • 法一

image-20230111213926223

  • 法二

image-20230111214028386

image-20230111214146002

九.国内代码托管中心——码云

9.1 码云简介

  • 防止因为网络原因无法登录github,所以开源中国推出了码云

9.2 码云账号注册登录

  • 本人之前已经注册

image-20230111214551932

9.3 码云仓库创建

image-20230111214929954

  • 现在要先创建私有库 然后去管理仓库设置公开

image-20230111215136994

9.4 IDEA集成码云

9.4.1 安装码云插件
  • Gitee 去plugins里面找到并下载

  • 关联账号

image-20230111220648077

image-20230111220702374

9.4.2 发送项目到码云
  • 方法一:直接Gitee

image-20230111220816983

  • 方法二:push

image-20230111221153125

image-20230111221254516

  • 如果发生reject,gitee创建仓库不要点那个初始化,否则会和idea的push冲突

  • 修改之后再push

  • pull拉取代码

image-20230111221708696

9.5 码云复制GitHub项目

  • 导入已有仓库,从新建仓库页面的最上面找

image-20230111222300450

image-20230111222841122

  • 可以更新,点击上面的圈圈

image-20230111223036973

十.自建代码托管平台

10.1 简介

image-20230111223214249

10.2 安装

gitlab虚拟机上安装教程 正在修炼的西瓜君 

在虚拟机上安装

image-20230112001800673

image-20230112001932031

image-20230112001940560

image-20230112001952293

标签:文件,git,代码,GitLab,码云,Git,master,分支
From: https://blog.csdn.net/weixin_73749601/article/details/144645003

相关文章

  • Git-克隆与合并
    克隆与合并克隆gitclonefirst-stepsfirst-steps-clone对first-steps进行了克隆,该克隆库包含了first-steps的整个项目库和历史信息原版本库修改对first-steps/foo.txt进行修改,并提交cdfirst-stepsvimfoo.txtgitaddfoo.txtgitcommit--message"Achangeinthe......
  • git如何切换远程分支到本地?
    在Git中,你无法直接“切换”远程分支到本地,但你可以通过一系列操作来达到类似的效果。这通常涉及以下步骤:查看所有分支(包括远程分支):gitbranch-a拉取远程分支到本地:如果你看到了一个你想要的远程分支(例如remotes/origin/feature-branch),你可以使用以下命令将其拉取到本地......
  • 怎样把本地代码推送到码云远程仓库?第一次把本地仓库推送到远程仓库的详细步骤教程
    要将本地代码推送到码云(Gitee)远程仓库,按照以下步骤操作:1.初始化本地Git仓库gitinit在项目的根目录执行此命令,将本地项目初始化为Git仓库。2.添加所有文件并提交到本地仓库gitadd.gitcommit-m"Initialcommit"这会将项目中的所有文件添加到Git的暂......
  • Git分支管理
    为什么需要分支管理?开发效率统一的分支管理避免混乱明确的开发流程减少沟通成本新人容易理解和快速上手优化CICD流程分支策略配合自动化部署自动化测试和构建更可靠减少代码冲突规范的分支创建和合并流程明确的职责划分减少冲突常见Git分支管理方案对比GitFlow......
  • Git-第一次提交
    第一次提交配置用户名和邮箱gitconfig--globaluser.name<username>gitconfig--globaluser.email<email>目录结构first-steps就是一个示例项目创建版本库版本库是用来存储项目本身及其历史的进入到first-steps目录中cdfirst-stepsgitinit提交gitaddfo......
  • git clone命令返回Empty reply from server错误的处理
    我在使用gitclone命令拉取代码时,遇到了如下错误fatal:unabletoaccess'https://github.com/MasterTao2233/socket_study.git/':Emptyreplyfromserver我询问了百度ai文心快码,按照ai给的一步步排查上面表明我的url是正确的尝试ping一下git网址,发现可以ping通,这表明......
  • 向github仓库上传代码报错的处理
    remote:PermissiontoBROtao233/socket_study.gitdeniedtoMasterTao2233.fatal:unabletoaccess'https://github.com/BROtao233/socket_study.git/':TherequestedURLreturnederror:403在通过push命令向github仓库上传代码时,遇到了上面的报错仔细读,意思是,对于用户......
  • 开发小技巧之GIT版本回退
    背景写在前面在项目开发的过程中,有时候提交了不应该提交的内容或提交错分支了,需要撤回对应的提交内容。也就是需要进行版本回退操作那具体怎么操作呢?再说具体怎么操作之前,我们需要明白回退有几种情况。第一种情况:已经commit,但未push到远程仓库。1️⃣第二种情况:已经com......
  • 解锁 Git Log 更多实用技巧
    目前,在软件开发的协作中,Git无疑是版本控制的王者。而其中的gitlog命令,犹如一把强大的历史探寻之剑,能够帮助我们深入洞察项目的演进历程。本篇将为大家整理解读几个实用的gitLog技巧,让你的项目管理和代码审查工作如虎添翼。1.挖掘代码深处的历史变更gitlog具备按文件......
  • Git的安装和使用,以及如何把VS上的代码推送到Gitte。
    Git的安装和使用1.Git的安装2.Git全局参数配置3.注册Gitte和创建远程仓库4.邀请其他成员5.获取本地仓库6.将VS上的代码推送给Gitte1.Git的安装下载链接:Git根据自己的操作系统下载即可Install(安装)Cancel(取消)Finsh(完成)右击鼠标会出现下面的OpenG......