300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Git Github Gitee GitLab学习笔记

Git Github Gitee GitLab学习笔记

时间:2020-09-09 18:57:26

相关推荐

Git Github Gitee GitLab学习笔记

文章目录

Git、Github、Gitee、GitLab学习笔记前言一、Git1、Git概述2、Git基本操作介绍2.1 安装&卸载2.2 启动 3、Git的基本使用3.1 GIt指令大全3.2 Git相关配置3.3 Git常用指令 4、Git基础知识4.1 Git的三大区域4.2 Git中文件的四种状态 5、版本穿梭6、Git分支操作6.1 分支概述6.2 分支操作 7、Git团队协作机制 二、Github1、Github基本介绍2、Github的基本使用2.1 仓库的建立和删除2.2 Github基本操作2.2.0 访问设置2.2.1 push操作2.2.2 pull操作2.2.3 clone操作 3、Github团队协作3.1 发送邀请3.2 fork操作3.3 pull request操作 4、IDEA集成Git4.1 配置Git4.2 使用Git 5、IDEA集成Github5.1 配置Github5.2 使用Github5.2.1 创建远程库5.2.2 push操作5.2.3 pull操作5.2.4 clone操作 三、Gitee1、Gitee基本介绍2、Gitee的基本使用3、IDEA集成Gitee3.1 配置Gitee3.2 使用Gitee 四、GitLab1、GitLab基本介绍

Git、Github、Gitee、GitLab学习笔记

前言

本文主要是介绍Git、Github、Gitee和GitLab这四者,以及前三者的基本使用,并且还还有IDEA搭配前三者的使用,手把手教你如何在IDEA中使用前三者。

学习建议:

建议平时多逛Gitee和Github,同时多使用Git将自己的代码提交到Gitee或Github上,以此熟悉Git常用命令的使用建议在学完Linux后再学Git,毕竟Git就是为Linux而生的

如果觉得本文对你有所帮助,欢迎点赞👍、收藏⭐,如果文章有个别错别字、或表示不当、或错误,恳请评论✍指出,在下不胜感激

一、Git

1、Git概述

Git是什么

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。本质是一个系统软件。

是[Linus Torvalds](/item/Linus Torvalds/9336769)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件,用来替代BitKeeper的(PS:因为开发BitKeeper的公司要收费,Linus Torvalds觉得你 ™ 一个这么"简单"的东西居然™还好意思要收费,于是就花两周研发出了Git,这场景有点像他当初想研究Unix的原理,但是Unix要收费,于是他自己就研发了Linux,O(∩_∩)O这就是大佬吧!”你不给老子用,老子就自己开发一个出来“😆真强!同时Git是如今世界上最好用的分布式版本控制系统)。

在学习Git前让我们一起来拜一拜🙇‍🙇‍祖师爷吧~ o( ̄▽ ̄)ブ(老爷子👴还健在ヾ(•ω•`)o)

祖师爷的图片挂了(CSDN居然连祖师爷的图片都不让展示w(゚Д゚)w),所以在下只能提供链接供大家参拜😆

👉:Git祖师爷

什么是版本控制

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术

其主要作用是:方便查看(或回退到)历史版本,方便多人协作,提高开发效率

版本控制主要有本地式版本控制集中式版本控制分布式版本控制

本地式版本控制

所有的版本数据存储在本地1。记录文件每次的更新,可以对每个版本做一个快照2,或是记录补丁文件,使用于个人,相代表产品:RCS……

集中式版本控制

所有的版本数据都存在服务器上。用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS……

分布式版本控制

所有版本数据全都会同步到每个用户的电脑上。这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。代表产品:Git、Mercurial、Darcs……

Git的优点

速度快灵活分布式设计支持离线工作

了解了这么多Git的优点,我们也有必要了解Git一个主要的缺点,那就是存在安全隐患。Git是分布式版本控制,所有版本信息都会同步到每个用户的电脑上,如果在公司中使用Git,很容易就将系统的重要信息给泄露出去。

Git有什么用

可以实现软件的版本控制,在多个版本之间切换;可以实现多分支开发,提高开发效率;可以实现历史记录,历史状态的恢复;团队内部实现权限管理

为什么要学习Git

因为去公司上班肯定是要一群人一起开发东西,这就需要共同协作,不可能一个公司就你一个人吧?其次就是使用git能很迅速地将远程仓库(比如:GitHub、Gitee)中的项目进行克隆到本地,是一个是非好用的工具,就比如有打火机不用还去钻木取火?

学习站点

Git官网Git 教程 | 菜鸟教程 Learn Git Branching

2、Git基本操作介绍

2.1 安装&卸载

方式一:直接去官网下载 Git官网

步骤如下

方式二:镜像下载(推荐) 🚪传送门

官网下载速度优点慢,主要原因有以下几点:

Git服务器在国外,距离我们较远。学过计算机网络的都知道,访问一个站点,需要路由转发,距离越远所消耗的时间越长国内存在网络防火墙,无法直接访问外网,需要翻墙

步骤如下

下载后就可以直接进行安装,无脑下一步即可!安装完毕就可以使用了!

Git卸载步骤: 删除 G i t 的环境变量 → 卸载即可 删除Git的环境变量\rightarrow{卸载即可} 删除Git的环境变量→卸载即可

2.2 启动

安装成功后在开始菜单中会有Git项:

**Git Bash:**Unix与Linux风格的命令行(推荐)

**Git CMD:**Windows风格的命令行

Git GUI:图形界面操作Git(不推荐)

任意文件夹下右键都可以看到对应的Git菜单:

打开后就可以通过直接敲指令来使用Git了O(∩_∩)O

由于Git和Linux同出一脉,他们的创造者都是Linus,并且Git本来就是Linus创建出来为了服务Linux的,所以可以直接在Git Bash窗口使用Linux的指令,常用Linux指令请参考:Linux常用指令大全(分类明确,用法介绍详细)

3、Git的基本使用

3.1 GIt指令大全

推荐阅读:Git索引 | 猴子都能懂的GIT入门

温馨提示:

如果大家觉得这些命令太多,可以只记带星号*****的(●ˇ∀ˇ●),其他命令等需要用到的时候,

再从收藏夹里找出来看,欢迎收藏( •̀ ω •́ )✧

如果觉得带星号*也太多了,就直接看3.3小节吧

一、git安装后-指定名称和邮箱(用户签名,首次安装git必须设置,否则无法提交代码)$ git config --global user.name "Your Name"$ git config --global user.email "email@"二、创建版本库$ mkdir learngit//创建$ cd learngit//使用$ pwd//查看当前目录$ git init//初始化,生成.git文件(若该文件隐藏,则使用ls -ah)*三、把文件添加add和提交commit到版本库$ git add test.txt//添加暂存区指定文件$ git add .//提交暂存区所有的文件$ git commit -m "提交说明信息" 文件名//提交$ git commit -m "提交说明信息" .//一次性提交多个文件,注意:必须在当前版本库和当前目录下*四、版本控制$ git log//查看提交历史记录,从最近到最远,可以看到3次$ git log --pretty=oneline//加参,简洁查看$ git reflog//查看每一次修改历史$ cat test.txt//查看文件内容$ git status//查看工作区中文件当前状态$ git reset --hard HEAD^(HEAD~100)(commit id)//回退版本,版本号可以使用git reflog查看$ git checkout -- test.txt#丢弃工作区的修改,即撤销修改$ git reset --hard#将所有内容回退到最近一个未修改的版本$ git reset HEAD test.txt#丢弃暂存区的修改(若已提交,则回退)五、删除文件$ rm test.txt//直接删除$ git rm test.txt$ git commit -m "remove test.txt"//删错了,恢复$ git checkout -- test.txt*六、远程仓库$ ssh-keygen -t rsa -C "youremail@"//创建SSH Key$ git remote add origin git@:Daisy/AKgit.git//关联$ git push -u origin master//将本地内容推送到远程仓库(第一次)$ git push origin master//将本地内容推送到远程仓库(之后)$ git remote -v //查看远程仓库信息$ git remote rm origin//删除远程仓库(解绑)$ git clone git@: Daisy/AKgit.git//克隆远程仓库//克隆之后使用和查看$ cd gitskills$ ls$ git remote//查看远程库的信息$ git remote -v//查看远程库的详细信息*七、多人协作(分支操作)$ git checkout -b 分支名//创建并切换到分支$ git branch 分支名//创建分支$ git checkout 分支名//切换分支$ git merge 分支名//将分支合并到当前分支//新版本$ git switch -c 分支名//创建并切换到分支$ git switch master//直接切换分支$ git branch//查看当前分支$ git merge dev(--no-ff)(-m)//合并,把dev分支的工作成果合并到master分支上$ git branch -d 分支名//删除分支 $ git stash//将现场储藏起来$ git stash list//查看储存的工作现场//恢复和删除$ git stash apply$ git stash drop//恢复并删除$ git stash pop$ git cherry-pick 4c805e2//复制修改$ git push origin master(dev)//推送分支$ git checkout -b dev origin/dev//创建远程origin的dev分支到本地$ git pull//抓取分支(解决冲突)$ git branch --set-upstream-to=origin/dev dev//指定本地与远程dev的链接$ git rebase//把本地未push的分叉提交历史整理成直线八、标签管理$ git tag v1.0//打标签$ git tag -a v0.1 -m "version 0.1 released" 1094adb //指定标签名和说明文字$ git tag//查看所有标签//若是忘记打,则查找历史提交commit id ,再打上$ git log --pretty=oneline --abbrev-commit$ git tag v0.9 f52c633$ git show v0.9//查看标签详细信息$ git tag -d v0.1//删除标签$ git push origin v1.0//推送标签到远程$ git push origin –tags//一次性推送全部本地标签//删除标签,(若已推送到远程,先从本地删除,从远程删除)$ git tag -d v0.9$ git push origin :refs/tags/v0.9 九、自定义git$ git config --global color.ui true//让git显示颜色//忽略特殊文件//.gitignore文件# Windows:Thumbs.dbehthumbs.dbDesktop.ini# Python:*.py[cod]*.so*.egg*.egg-infodistbuild# My configurations:db.inideploy_key_rsa//把该文件也提交到git$ git add -f App.class//强制添加被忽略的特殊文件$ git check-ignore -v App.class//检查哪个规则出错# 排除所有.开头的隐藏文件:.*# 排除所有.class文件:*.class# 不排除.gitignore和App.class:!.gitignore!App.class$ git config --global alias.st status//配置别名$ git config --global alias.unstage 'reset HEAD' //配置操作别名$ git config --global alias.last 'log -1'//显示最后一次提交信息$ git last//显示最近一次的提交$git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" //颜色$ cat .git/config //查看每个仓库的git配置文件$ cat .gitconfig //查看当前用户的git配置文件

3.2 Git相关配置

要使用Git首先需要设置用户签名否则提交代码会报错,用户签名的设置主要用到两个指令

git config -global user.name 用户名:设置用户名git config-global user.email 邮箱:设置用户邮箱(Git不会对邮箱进行验证,但是必须要要设置)

设置好后可以去C盘的**.gitconfig**进行查看:

注意:用户签名跟我们使用Git访问的远程库Github或Gitee的账号密码没有关系,它只是一个标记,让Git知道现在是谁在操作Git,因为可能这个Git不止一个用户在使用,每个用户的配置信息很可能都是不一样的

初始化本地库。设置好用户签名后,还需要使用git init指令初始化本地库,否则无法使用Git操作你的代码

在文件中使用初始化指令后会出现一个**.git**文件:

注意:这个文件夹默认是隐藏的,需要在查看中勾选隐藏项目,才能看得到。同时一定不要顺便去修改它

查看Git相关的配置信息

git config -l:查看Git所有配置信息

git config --system --list:查看系统配置文件

git config --global --list:查看当前用户配置

git config user.name:查看当前用户名

git config user.email:查看当前用户邮箱

Git系统配置文件所在位置:(里面存放的是Git的系统配置信息,可以通过git config --system --list进行查看)

知识拓展:Linux中系统文件都是存放在gitcofig文件中

Git用户配置文件所在位置:(里面存放的当前用户的Git配置信息,可以通过git config --global --list指令进行查看)

Git配置文件介绍

3.3 Git常用指令

4、Git基础知识

4.1 Git的三大区域

Git本地有三个工作区域:工作区(Working Directory)、暂存区(Stage或Index)、版本库(Repository或Git Directory)。如果在加上远程的GIt仓库(Remote Directory)就可以分为四个工作区域。

文件在这四个区域之间的转换关系如下

工作区:是在你本地电脑上的一个文件夹,里面是你的代码(可以是任意的,只要能写代码就行)。如下图所示:

暂存区:是在版本库中的一个index文件,属于版本库中一块特殊的区域,要想进入版本库必须先进入暂存区(虽然它属于本地库,但是一般我们将它和版本库分开讲)

版本库:(也称本地库)是在你工作区中的一个**.git隐藏文件夹**,注意它虽然工作区中,但是却不属于工作区,只是物理上在工作区中而已。

这里需要注意的是,文件提交到版本库后,文件仍然能在工作区上看见,但是每次切换版本或者分支,提交到版本库中的文件都会改变,而在工作区中的文件是不会随着分支的切换而改变的

远程库:是用来存放代码的地方,不在本地。一般我们用到的远程库有Github、Gitee,当然也可以使用GitLab自己搭建一个远程库

4.2 Git中文件的四种状态

可能我们使用Git在一段时间操作了许多文件,当我们想要提交时,为了区分要哪些是要提交的文件,哪些是不需要提交的文件,Git就将文件分为了四种状态,这四种状态分别是:未追踪踪态(Untracked)、暂存态(Staged)、未修改态(Unmodify)、已修改态(Modified)

说明

Untracked:未追踪态。文件在工作区或暂存区中,如果执行git add指令就进入暂存区,同时文件转变称追踪态,也称暂存态。未追踪态的文件通常是红色的,已追踪态的文件是绿色的;Staged:暂存态,文件在暂存区中。这种类型的文件有两种去处:如果执行git commit指令就进入未修改态;如果执行git rm --cached <file>将暂存区中的文件删除,文件重新进入未追踪态;Modified:已修改态,文件按在暂存区中。这种类型的文件有四种去处:如果它通过git add变成暂存态(使用git status查看仍然是已修改态,只是文件变绿了);如果执行git rm --cached <file>将暂存区中的文件删除,文件重新进入未追踪态;如果执行git commit文件变成未修改态;如果文件按执行git checkout文件变为未修改态,和提交不同的时,这个会从版本库中取出对应文件,讲暂存区中修改过的文件进行覆盖;Unmodify:未修改态,文件此时已入本地库。这种类型的文件有两种去处:如果它通过vim修改, 会变为Modified(此时也是未追踪态),修改的文件在暂存区中;如果使用git rm指令将文件移出版本库, 则成为未追踪态;

状态转换演示

初始本地库查看状态git init指令初始化本地库,然后使用git status指令查看本地库的状态:

新建文件查看状态:在工作区中新建一个文件,不使用用git add

将未追踪态转成暂存态:使用git add追踪文件,让文件按编程暂存态

暂存态变成未修改态:使用git commit暂存态的文件提交到本地库

未修改态变成修改态:使用vim指令对文件进行修改,文件变为已修改态,但是文件会重新变回未追踪态

未追踪的修改态变成追踪的修改态

未修改态变成修改态

验证未跟踪的已修改态是在暂存区中的:

Step1:先将一个文件正常提交到本地库Step2:然后使用vim进行修改,产看文件状态Step3:直接提交修改后的文件(注意这里不要使用git add)Step4:使用git reflog查看当前HEAD指针的指向

结果判断:如果执政指向了后面提交的文件,则说明我们提交成功,未跟踪的已修改态在暂存区中,同时未跟踪态不一定是在工作区中。反之则验证失败!(主要是这里老师没有讲清楚,不得不验证一下)

5、版本穿梭

当我们每次修改一次文件提交到本地库后就会产生一个历史版本,版本穿梭就是通过指令进入到某一个版本,每一个版本都有各自特有的数据,特有的环境,不受其它版本的影响。所以不能随便提交到本地库,一旦提交错误的代码这个版本就无法改变了,只能使用其它版本进行替代了。

版本穿梭常用命令

6、Git分支操作

6.1 分支概述

什么是分支

分支就是一个单独的副本。在版本控制中,我们可以为每一个任务创建一个分支,使用分支意味着程序员将工作于主分支进行了分离,开发自己的分支时不会影响其他分支,如果觉得分支功能很好,可以和主分支进行合并。(分支的底层就是指针,版本穿梭的底层原理也是指针,因为Git是用C写的)

分支和版本的关系

一对多的包含关系(类似于集合和集合元素的关系),一个分支可以拥有多个版本,一个版本只能属于一个分支!

分支的底层实现原理:就是指针,Git和Linux都是使用C语言写的。使用HEAD指针指向所在分支,然后通过分支heads下的分支文件指向所在版本

HAED本质是一个文件,里面存放了当前分支的信息: heads下的分支文件指向当前分支的版本,该分支文件存放了当前版本信息:

当在一个分支中(假设是master分支)进行版本穿梭时,HEAD文件中的数据不会发生改变,而headsmaster文件中的版本信息就会发生改变,让master指针指向穿梭的版本(相当于是上图中两个指针同时移动);当进行分支切换时(假设是由master切换到hot-fix),则HEAD文件中的数据会发生改变,让head指针指向hot-fix指针

简而言之就是:头执政确定分支,分支指针确定版本,头指针只能有一个,分支指针可以有多个

分支的好处

十分适合并发操作,能够有效提高开发效率提高项目的安全性,当分支出现故障时不会影响其他分支

6.2 分支操作

分支操作常用命令

注意事项

分支的创建、分支的切换,首先需要版本库中有文件

当我们刚刚初始化一个本地库时,如果版本库中没有文件,无法查看到当前所在的master分支,无法创建分支;当版本库中有文件后,随时都能进行分支的创建和切换、

工作区中的文件不会随着分支的切换而改变

工作区的文件所有的分支都能通过cat指令查看到,因为cat指令实际上查看的是工作区的文件,当我们切换分支时,工作区里面那些提交到版本库的文件内容会随之改变,但是工作区中的文件不会改变

切换分支时,一定要将修改过的分支提交到本地库

当我们切换到其他分支,修改完文件后,此时文件在暂存区,如果不提交到本地库,其它分支的该文件也会被修改!

分支合并产生冲突,手动修改后的文件提交时不能写文件名,分支合并只是改变一方

备注:2.3.可以合并为一点,也就是非本地库的文件分支切换时具有全局性

以上这些都是一些重点注意事项!不注意很容易出错!

示例1

需要先存在一个分支,创建和切换分支分支必须先要将工作区的文件提交到本地库,否则无法创建分支

示例2

使用git commit指令提交到版本库的文件会随着分支的切换而改变,但是工作区的不会

示例3

分支切换时如果不将暂存区的文件提交到版本库,则会影响到到其它分支

示例4

冲突出现的原因:因为我之前在mster分支对test.txt文件进行了修改然后提交,又在hot-fix分支中对test.txt文件进行了修改,系统不知道我们合并是以那个为准(需要手动合并),就会产生冲突(当我们只修改一个文件是,合并以被修改的为准

备注Git中合并其实就是覆盖,Git默认是将合并的两个文件,用修改过的去覆盖掉没有被修改的;如果两个文件都被修改,它就不知道要覆盖谁,就需要你手动去修改(也就是vim进入编辑模式,哪里不需要删哪里)

合并后的文件,提交时,一定不能有文件名,否则报错:

同时合并分支,只是修改了当前所在分支,合并过来的分支没有改变!

比如这里,我们在master中进行了分支合并操作,将hot-fix的test.txt合并到master分支上的test.txt,只有master分支上的test.txt改变了,hot-fix上的test.txt内容不改变

7、Git团队协作机制

团队内协作

跨团队协作

二、Github

1、Github基本介绍

什么是Github

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。

官网:Github

Github的前世今生:这里

Github的作用有哪些

提供代码托管服务

提供代码存储。可以在Github上建造属于你的个人仓库,存放你的代码,GitHub本质就是充当Git的一个远程库角色,同时也是全球最大、使用人数最多的Git远程库

方便找寻项目资源。有很多人将优秀的代码都放在Github上的仓库中,并且Github是强烈支持开源的,很多人都会将仓库设置成public,大家都能进行访问并下载

提供代码在线编辑功能。可以直接在线编辑你的代码,或者更改别人的代码(必须经过被人授权)

提供信息交流。Github作为全球最大的同性交友平台,我们可以通过邮箱或者拉取请求窗口与其他人友好交流,同时上面有很多计算机界的大牛,这里我就推荐几个大牛:

Linus Torvalds,嘿嘿,这个人大家肯定都很熟悉吧,就是开篇那位Git祖师爷😆

它也是开源界的领袖人物,一身都在致力于开源事业,看看这位勤奋的祖师爷,我们还有什么理由不努力呢😃

John Resig:JQuery的创始人,同样也是一尊大神

Jake Wharton:Android之神,GitHub 全球排名第二位!

……

看到这里,不禁感慨,大神之所以是大神,勤奋是必不可少的,加油吧少年(ง •_•)ง

什么是代码托管服务

通俗来讲,代码托管服务就是指在保证代码唯一性的前提下,实现多人共同协作开发,我们只需要通过一些指令就能操作托管的代码,无需关心如何实现。比如我们将本地库的代码通过push推送到Github上,我们只需要敲一个指令就可以了,Github就能直接接收代码,同时对代码进行保护和管理,其它人要用或者要修改需要经过你的同意。顺便提一句,托管服务不一定需要联网,Git也是拥有托管服务功能的,只是只能在本地进行,所以通常选用Github作为代码托管平台

代码托管的作用有哪些

保障代码的安全简化对代码的操作。只需要通过指令就能直接操作代码,比如想要克隆代码,直接一个git clone而不是傻傻地CV

……

2、Github的基本使用

温馨提示:如果觉得Gitub访问太慢,主要有三个选择(实际上更多,下面三种方法是我亲测有效的)

搭建CDN,推荐链接在下面,这个方法最稳,但是相对而言比较麻烦,推荐指数⭐⭐⭐使用镜像访问,GitClone - GitHub缓存加速网站,为开发者服务,这个最简单,虽然也能访问到GitHub上的资源,但是不能访问原本的,也不能使用GitHub仓库(失去了灵魂),顶多用来找资源,推荐指数⭐⭐使用插件加速,推荐使用:GitHub加速,这个相对简单但是插件不太稳定,推荐指数⭐⭐⭐⭐

2.1 仓库的建立和删除

仓库的建立

删除库

2.2 Github基本操作

前面我们已经学会了如何在GitHub上创建删除仓库,现在我们就来学习使用本地库和GitHub建立连接,然后进行代码的推送克隆操作吧。

常用指令

git romote -v #查看当前所在远程地址的别名git remote add 链接的别名 仓库的链接[/Chinafrfq/Test/test1] #给链接创建起别名git clone 仓库的链接#克隆远程仓库git pull 链接别名(或链接) 分支名 #将远程库对应分支中的文件拉取到本地库的当前分支git push 链接别名(或链接) 分支名 #将本地库对应分支中的文件推送到GitHub上对应的仓库里面将分支推送到远程库

2.2.0 访问设置

本地库访问Github主要有两种方式,一种是HTTPS(安全访问),一种是SSH(免密访问)。相较而言HTTPS访问起来更加简单、安全,但是需要登录账号,但SSH的方式进行访问Github要快上许多。2.2.1我们使用的HTTPS的访问方式,这里我们用一下SSH免密访问

$ ssh-keygen -t rsa [-C 设置的邮箱] # 指定未某一个账号设置免密登录,后面[]中也可以不用,默认使用当前账号# 然后连续敲三次回车

备注:除了使用rsa加密算法,还可以使用Ed25519

执行完上述步骤后,在C:\Users\ghp目录下会生成一个**.ssh**文件夹

将公钥的内容复制到Github上:

2.2.1 push操作

注意事项:

(细节非重点,但是要了解)最好先到windows菜单中查看凭据管理器,凭据管理器会自动记住一个账号,如果我们在一台电脑上使用多个账号,系统会默认push到凭据管理器记住的那个账号只能将本地库的文件push到远程库,工作区的文件push直接报错,暂存区的文件push无报错,但是显示无任何数据更新;成功push的文件,会直接进入本地库

Step1复制访问链接。创建好仓库,我们点击查看仓库,然后复制访问链接,本地库使用访问链接进行访问

这里既可以选择HTTPS也可以选择SSH,也可以使用SSH免密登录,2.2.0小节有介绍

Step2给访问链接起别名

在本地库中,将访问的链接起一个别名(有点类似于域名,就是方便记忆)

Step3push文件。将本地库的文件推送到Github对应的仓库中

工作区的文件按push直接报错:

暂存区的文件提交,显示无数据更新:(红色的已修改态也是在暂存区,所以提交也是下面这种情况)

将文件提交到本地库,然后就可以成功提交了:

现在就能在GitHub上的Test/test1仓库中看到刚刚提交的文件了:

2.2.2 pull操作

pull操作主要是用来跟新本地库的代码的。

注意事项

如果我们将远程库的文件进行了修改,又将本地库的文件进行了修改,此时进行pull操作会本地库文件更新失败!

Step1修改仓库的文件。将之前push到仓库的hello.txt文件进行修改

Step2修改本地文件。将本地库的hello.txt文件进行修改

Step3进行pull操作。直接出现失败,显示需要进行文件合并

解决方案

方案一暂存文件。执行git stash指令后将修改过的代码封存起来(存到一个栈中),同时回退到未修改的版本,再进行pull操作,此时我们就能够成功pull到远程库修改过的代码了,最后建议将栈中的文件pop出来,不然栈会溢出

Step1:使用git stash指令将修改的文件放到栈中暂存起来,然后将文件出栈

Step2:手动合并代码,然后进行提交

注意:提交时不要写文件名

方案二回退版本

Step1:使用git reset --hard指令回退到之前的版本Step2:使用pull指令进行拉取Step3:手动修改pull后的代码,然后提交本地库,完成本地库更新

两种方法的比较:推荐使用方法一,因为它既能保留本地库中文件的修改部分,又能保证远程库中文件修改的部分;方法二会直接将覆盖掉本地库中修改的部分,假如你只是想要远程库的代码,可以使用这种方式,同时需要注意git reset --hard指令的坑:使用这条指令会直接将暂存区的文件清空!!!!请谨慎使用

2.2.3 clone操作

克隆干了三件事,initpullremote

注意

克隆不需要初始化本地库,它是直接将远程库CV下来(当然CV操作是Git做的),在本地形成一个新的本地库克隆会自动给链接取别名,默认别名是origin

3、Github团队协作

一般一个项目很难一个人完成开发,毕竟不是每一个人都是全栈开发师,所以我们需要进行团队协作,Github就提供了一个团队协作的功能。首先需要项目(也可以说是远程仓库)的创建者向其它成员发起邀请,其它人接收了邀请就能一起参与开发了,大家能够将这个远程仓库的代码Clone到本地,然后一起完善各自的部分,最后再push到这个远程库。

3.1 发送邀请

Step1:创建仓库,并发送邀请函

邀请链接:/Chinafrfq/Test-test1/invitations

Step2被邀请者同意邀请

由于只有一个人,同时我也懒得再创建一个账号了,所以就到此为止了吧<(^-^)>

3.2 fork操作

当项目的创建者,向我们发送邀请,我们同意以后,就能够直接来到他们的仓库,然后将仓库中的代码要么fork到我们自己的远程仓库进行在线修改,要么clone到本地仓库,使用IDE进行修改

Step3被邀请者修改,其它成员接收请后,可以看到你仓库中的项目,有两种方式可以修改代码

方式一frok。将你仓库中的代码fork到其它成员的仓库中,直接再仓库中进行修改(这个很费功力)

方式二clone。将你仓库中的代码clone到本地,使用IDE进行修改,修改好后再push一下就OK了

这里就详细讲解一下frok代码的流程

1)fork 代码

2)将fork到远程库中的代码进行修改:

3)提交代码:

3.3 pull request操作

当我们使用fork将别人的代码叉到我们自己的仓库后,我们虽然进行了修改,并且进行了提交,但是提交的代码仍然是在我们自己的仓库,我们还需要将代码发送给别人

1)发送拉取请求:

2)项目的创建者只要接收拉取请求,就可以看到别人修改的代码,同时别人还可以点击comment发送信息给拉取请求发出者

同时创建者还可以点击Mergepullrequest进行代码合并

4、IDEA集成Git

4.1 配置Git

在使用IDEA集成Git前,我们需要给GIt配置忽略文件

什么是忽略文件

我们使用IDE的时候,都会生成一些IDE相关的配置文件,这些文件不参与项目的实际运行

为什么要忽略文件

为了提高代码的移植性。当我们将项目push到远程库,其它人进行拉取的时候,可能由于使用的IDE不同,就会导致运行失败,所以我们需要将这些与IDE相关的配置文件忽略掉,这样在push代码文件时时就不会将这些文件也上传到Github上

IDEA集成Git的步骤

Step1:编写忽略文件,格式:XXX.ignore(建议命名未git.ignore)

# Compiled class file*.class# Log file*.log# BlueJ files*.ctxt# Mobile Tools for Java (J2ME).mtj.tmp/# Package Files #*.jar*.war*.nar*.ear*.zip*.tar.gz*.rarhs_err_pid*.classpath.project.settingstarget.idea*.iml

Step2:在Git的用户配置文件中引用忽略文件

Step3:配置IDEA访问Git的路径

Step4创建本地库

4.2 使用Git

执行Add操作

将项目文件提交到本地库中,将文件添加到暂存区,添加成功后文件会由红变绿

备注:这里未添加看到是绿色的是因为我已经提交过一遍了

执行commit操作

将文件提交到本地库后,文件会由绿变白(或黑,根据你的主题变化,夜晚主题是白色的,白天主题是黑色的)

修改提交过的文件

修改文件:

修改后的文件由白变蓝

将修改过的文件提交到本地库

此时文件由蓝变白

查看各版本的信息

版本切换

同时当前目录下的代码页发生了改变!

创建分支

方式一方式二

分支切换

方式一

备注:黄色代表头指针,绿色的代表分支指针

方式二

合并分支

方式一方式二

解决代码合并冲突

当两个分支都进行了修改,然后再进行合并就会发生合并冲突。解决方法和前面是一样的,都是手动合并

IDEA十分智能,合并后的代码会帮我们直接添加到本地库中,无需再手动添加

5、IDEA集成Github

5.1 配置Github

登录Github账号

温馨提示:这个Github按钮一般是IDEA自带的,社区版可能没有,需要到插件商店下载Github插件

这里页可以使用账号登录,也可以使用Token登录。Token登录需要生成口令,地址如下:

⚠==注意==:口令只会显示一次,一旦刷星就再也找不到了,建议将口令存在一个文件中

登录成功O(∩_∩)O

5.2 使用Github

除了图形化界面执行Git指令外,还可以在Terminal窗口敲git指令(推荐)

5.2.1 创建远程库

使用IDEA上传代码到Github上

上传的项目是直接放在新创建的远程库中,相当于执行了创建远程库+push,再Github的仓库中可以查看到分享的项目:

5.2.2 push操作

push操作主要用来将我们在本地库中写好的代码上传到远程库

注意事项如果本地库的代码比远程库代码的版本低,无法进行push操作!一个成熟的程序员在push之前都会检查本地库和远程库的区别,如果发现本地库的代码版本低于远程库代码的版本,在修改本地代码前一定要先pull一下,否则修改了也push不上

方式一

方式二

如果想使用SSH登录,可以手动设置:

5.2.3 pull操作

pull操作和push操作一样也有两种方式,主要用来更新本地库的代码

注意事项如果本地库的代码和远程库的代码都进行了修改,此时进行pull会出现合并冲突,需要手动合并,详情参考:前面

pull冲突合并演示:

5.2.4 clone操作
方式一

方式二

三、Gitee

1、Gitee基本介绍

Gitee是什么

Gitee是一个托管平台,是开源中国创建的。

Gitee的作用是什么

主要作用和Github一样,其主要目的还是为了解决国内访问Github慢(前面有介绍)

Gitee和Github的区别

用户群体不同。Gitee基本上是中国用户,社区也是全中文的;Github是全球性的社区,用户遍及全球项目数量不同。Gitee上的开源项目没有Github多,Gitee迁移了一些Github上的优秀项目所属国家不同。Gitee是国内的开源中国,服务器在国内;Github是外国开发的,现在属于微软,服务器在美国旧金山;这也导致Gitee的访问速度要远远高于Github

2、Gitee的基本使用

和Github基本一致(由于Gitee全是中文可以说对于英语水平不高的而言还更加简单),具体可以参考Github的使用方式(PS:毕竟Gittee是Github的模仿者)

3、IDEA集成Gitee

3.1 配置Gitee

Step1:安装插件

Step2登录账号,这个和Github是一样的

PS:layne@

3.2 使用Gitee

Gitee的操作和Github极其类似,毕竟Gitee是Github的仿照者,这里就不详细介绍了

创建远程库push操作pull操作

导入Github仓库

嘿嘿,这才是Gitee的核心功能,就是国内下载Github上项目的跳板,假如Github访问、下载很快的话,谁还用Gitee,

但这里有一说一Github还是不太安全的,古语云”非我族人,必有异心“,从前段时间Github封禁俄罗斯开发人员的账号就可以知道了,开源没有国界,但是开源者有国界;科学没有国界,但是科学家有国界,在最危难的时候还是得靠祖国!

当我们成功在Gitee导入了Github上的项目后,当Github上的项目更新了,Gitee上的项目也可以动过手动刷新

跟新后,可以看到我在Github上添加的语句也能在Gitee上看到了

四、GitLab

1、GitLab基本介绍

GitLab是什么

GitLab是一个基于Git的代码仓库管理工具(和Github是类似的)。

Gitlab是由两名乌克兰程序员创建的,起初是完全开源的,后来拆分成社区版(收费)和企业版(不收费),这一点也无可厚非啊,毕竟好用,别人开发者也需要吃饭啊(●ˇ∀ˇ●),而且它一部分功能是采用最新的go语言编写的。GitLab一般用于公司自键Git代码仓库,具有很强的跨平台性。

因其Log是一只狐狸,所以也称极狐

官网:GitLab

GitLab的作用

主要作用和Github是一样的,都是用来托管代码的;主要区别是GitLab是开源的,安全性更高,Github是非开源的(不要误会,这里指的是Github本身,并没有说它上面的项目),所以很多大公司都会选择GitLab搭建公司内部的Git远程库

……

如果觉得本文对你有所帮助,欢迎点赞👍、评论✍、收藏⭐

参考文章:

“快照”与“备份”的区别 - 知乎 ()全面认识快照(Snapshot)技术 - 知乎 ()软件、系统和平台区别? - 知乎 ()Git入门教程,详解Git文件的四大状态 - 知乎 ()什么是分支?【分支 (branch)】| 猴子都能懂的GIT入门| 贝格乐(Backlog)从零到百亿美金之路 | 胡涂说 ():该文讲述了Github和GitLab的前世今生(推荐阅读)GitHub 访问速度慢怎么办? 9 种方案帮你提速-阿里云开发者社区 ()一分钟解决Github连接慢或者无法连接,亲测有效! - 腾讯云开发者社区-腾讯云 ():冰河大佬最新教程,亲测有效Github加速的10种方式如何提高国内访问GitHub的速度达到3MB/S以上(两分钟轻松解决) - 掘金 ()密钥SSH免密登录(详解)Gitlab和Github哪个好?Gitlab和Github区别 - 美国主机侦探 ()

一般我们说的本地就是指你正在使用的计算机 ↩︎

快照区别于备份,它是快照是管理版本控制和创建轻量级、易于访问的数据或系统版本的技术(或方法) ↩︎

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。