Git学习

概述

(1)git是什么?
git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
git易于学习,占用空间小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。

(2)什么是版本控制
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

(3)集中式和分布式的区别
集中式:
版本库是集中的存放于中央服务器的。干活的时候,先要去中央服务器里领取最新的版本,然后在开始干活。干完活在将自己的版本上传到中央服务器。
缺点就是,一但没有网或者网络不好的话,自己写的东西就很难得传上去。别人也不能及时的看到。简单的说就是没有网就不能使用。

分布式:
分布式版本系统没有绝对的所谓中央服务器,每个人的电脑上都有一个版本库,使用的时候就不需要进行联网了,直接自己进行修改就行。当多个人进行写作呢,只需要把你修改的和同事修改的进行交换就行。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

区别:

  • 分布式每个人的电脑上都可以直接拷贝完整的代码版本。而集中式只能拷贝自己需要的。
  • 分布式的服务器挂掉之后,不会影响工作。而集中式的服务器挂掉之后,根本就没法进行工作。

(4)工作机制
在这里插入图片描述

下载和安装

(1)去官网下载安装包
点击跳转官网
在这里插入图片描述
根据你的电脑配置选择相应的版本
在这里插入图片描述
我选的64位 windows setup。

(2)双击安装程序,开始安装
在这里插入图片描述
更改一下安装路径

在这里插入图片描述
保持默认

在这里插入图片描述
选择编辑器,默认是vim,vim是纯命令行,使用不太方便,正好我安装了VSCode,所以我们选择了VSCode作为默认编辑器。
在这里插入图片描述
除了vim,选择其他第三方软件作为默认编辑器,需要安装第三方软件,然后在环境变量配置软件的安装目录。

在这里插入图片描述
选择初始化新项目的主干名字,选择默认

在这里插入图片描述
选择第一个就行

在这里插入图片描述
这个也是默认就行

在这里插入图片描述
普通用户选择第一个就行

在这里插入图片描述
配置行尾符号转换,选第一个就行

在这里插入图片描述
配置终端模拟器与Git Bash一起使用,选择第一个

在这里插入图片描述
选择默认

在这里插入图片描述
默认

在这里插入图片描述
默认,开启缓存

在这里插入图片描述
实验室功能,有些功能可能不太成熟,建议不要开启。

在这里插入图片描述
安装完成

(3)测试
在这里插入图片描述
右键桌面选择“Git Bash Here”。

在这里插入图片描述
输入“git --version”查看版本。

常用命令

命令名称作用
git config --global user.name 用户名设置用户名
git config --global user.email 邮箱设置用户邮箱
git init初始化本地库
git status查看本地库状态
git add 文件名将文件提交到暂存区
git rm --cached 文件名将文件存暂存区删除
git commit -m “日志信息” 文件名将暂存区的文件提交到本地库
git reflog查看历史记录
git log查看详细的历史记录
git reset --hard 版本号版本穿梭(回到指定版本)

(1)设置用户名和邮箱
第一次使用Git要先设置用户名和邮箱,打开git bash,输入如下命令设置用户名和密码

git config --global user.name 用户名
git config --global user.email 邮箱

设置好用户名和邮箱后,可以进入你的用户目录(C盘user文件夹里电脑用户名开头的文件夹),在里面有一个配置文件“.gitconfig”。
在这里插入图片描述
用记事本打开可以在里边看到你配置的用户名和邮箱。

(2)初始化本地库
随便建立一个文件夹,然后在文件夹内右键打开git bash,输入如下命令这个文件夹就会被初始化为我们的本地库。

git init

成功初始化后显示如下信息:
在这里插入图片描述
然后会在我们的目录下生成一个隐藏文件夹“.git”,可以进入看一下,结构如下:
在这里插入图片描述
HEAD文件记录当前指向的分支,什么是分支后面会说,现在先提一下。

(3)查看本地库状态
初始化本地库后可以使用如下命令来查看本地库的状态

git status

输入命令后,结果如下
在这里插入图片描述
这有三句话,第一句话说我们当前在master分支;第二句说我们还没有提交过东西;第三句说我们没有什么东西可以提交,也就是我们还没有文件,接下来我们创建一个文件演示一下,如何提交文件。
(4)创建一个文件
输入如下命令会创建一个a.txt文件并使用VSCode打开

code a.txt

在文件中编辑一些内容,保存并退出
在这里插入图片描述
然后在我们初始化本地库的文件夹中会出现这个文件。

(5)提交到暂存区
再次查看本地库的状态
在这里插入图片描述
可以看到我们新建的文件a.txt,但是是红色的,表示还没有被提交,输入如下命令会将文件提交到暂存

git add a.txt

提交后再次查看本地库状态,可以看到文件变绿了,表示我们已经成功提交到暂存区了。
在这里插入图片描述
在暂存区的文件我们还可以删除(git rm --cached a.txt),因为还没有提交的本地库,所以不会生成版本信息。如果提交到本地库,就会生成提交记录,记录就会永久保存。

(6)提交到本地库
提交到暂存区后,输入如下命令可以将文件提交到本地库

git commit -m "第一次提交" a.txt

提交后结果如下
在这里插入图片描述
(7)查看本地库提交记录
使用如下命令可以查看本地库的提交记录

git reflog 精简的历史记录信息
git log 详细的历史记录信息

结果如下
在这里插入图片描述
在这里插入图片描述
可以看到提交记录中有精简版和详细版都有一串复杂的号码,那就是我们提交的每个版本的版本号,后面我们可以通过版本号回到想去的版本。

(8)版本穿梭
版本穿梭就是我们可以回到想去的提交过的指定版本,我们可以将文件修改后再提交一次
在这里插入图片描述
给文件加上一句话,然后提交到本地库,再次查看本地库的提交记录
在这里插入图片描述
可以看到这次有两个记录了,如果我们要回到第一次提交的时候,只需输入以下命令

git reset --hard c764516

其中c764516就是我们第一次提交版本的版本号。执行命令结果如下
在这里插入图片描述
再次打开a.txt查看文件内容
在这里插入图片描述
可以看到回到我们第一次提交的版本了。

分支

概述

可以认为分支就是当前工作目录中代码的一份副本。使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。在初始化本地Git仓库的时候,Git默认已经帮我们创建了一个名字叫做master的分支。通常我们把这个master分支叫做主分支。在这个主分支的基础上,我们可以创建新的分支、合并分支等功能。
在实际工作中,master主分支的作用是:用来保存和记录整个项目已完成的功能代码。因此,不允许程序员直接在master分支上修改代码,因为这样做的风险太高,容易导致整个项目崩溃,因此我们需要在自己负责开发的分支上进行开发。

常用命令

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定分支合并到当前分支上

(1)查看分支
使用如下命令查看当前有哪些分支

git branch -v

结果如下:
在这里插入图片描述
当前只有一个分支master,而我们就是在当前分支下(左边有*号)。

(2)创建分支
在master的基础上,我们使用如下命令创建一个新分支,命令如下

git branch branch2

查看分支
在这里插入图片描述
可以看到这次有两个分支,其中branch2就是我们新创建的分支。

(3)切换分支
使用如下命令切换到branch2分支

git checkout branch2

再次查看分支
在这里插入图片描述
指针已经指向了branch2,再对文件进行操作就是在branch2分支操作了,不会影响master分支。

(4)修改分支内的文件
在分支branch2中修改文件
在这里插入图片描述
提交到本地库

(5)合并分支
先切换回master分支,然后使用如下命令将branch2分支的内容合并到master分支中。

git merge branch2

结果如下
在这里插入图片描述
这样branch2中的内容就合并到master分支中来了。

(6)冲突合并
上面讲的合并分支是普通合并,在实际生产中,大部分都是冲突合并,为什么会产生冲突呢?合并分支时,两个分支在同一个文件的同一个位置有两套不同的修改,这时候,git就不知道选择哪一个了,就需要我们去手动合并。
接下来演示一下冲突合并。

首先切换到分支branch2中,将文件修改成如下内容,提交到本地库
在这里插入图片描述
在这里插入图片描述
切回master分支,修改文件成如下内容,提交到本地库
在这里插入图片描述
在这里插入图片描述
注意了!注意了!要是我们再进行合并,是无法成功合并,会报错的,因为我们同时对两个分支的文件都做了修改,git不知道要保留那个,所以会报错。
接下来将分支branch2合并到master分支中,观察控制台消息
在这里插入图片描述
可以看到自动合并失败了,需要我们手动合并,这时我们打开文件看看文件内容
在这里插入图片描述
可以看到文件在同一个位置的修改已经被标记出来,将不需要的删除就行,选择要留下来的内容
在这里插入图片描述
再次将文件添加到暂存区。
然后将文件提交到本地库,注意,这一次提交就不需要带文件名了,如果带文件名反而提交不成功。
在这里插入图片描述
这样就完成冲突合并了。

注:分支与版本的切换实际是指针指向的改变。在.git目录中HEAD文件记录的就是当前指向的分支,在.git\refs\heads文件中会有几个和你的分支名同名的文件,每一个分支对应一个文件,每个文件中记录的就是该分支指向的版本。

团队协作

概述

什么是团队协作呢,如下:
在这里插入图片描述
A创建了一个项目,将项目push到远程库,然后B可以将项目clone克隆下来,经过修改后,又将项目push到远程库(必须要有A给的权限才能push),然后A就可以将修改好的项目pull拉下来。这就是团队内协作了,除了可以团队内协作,也可以跨团队协作,如下:
在这里插入图片描述
这时候不仅A和B可以修改项目,在另一个团队的C也可以,C先将A远程库的内容fork到自己远程库,然后克隆到自己的本地库,修改一番后push到自己的远程库,然后A将C远程库的内容拉过来进行merge合并。

远程库

要有远程库,我们要先注册一个githup网站的账号。登录账号后选择新建一个仓库(右上角)
在这里插入图片描述
在这里插入图片描述
填上仓库的名字,一般取项目的名字就行,然后选择public公共库(免费),点击创建就行了。
在这里插入图片描述
创建完成后,进入到一个页面,这个页面中记录着我们远程库的地址,有HTTPS和SSH两种类型,记住这个HTTPS的,后面要用。

常用命令

命令描述
git remote -v查看当前所有远程库地址的别名
git remote add 别名 远程库地址给远程库的地址起个别名
git remote remove 别名删除别名
git push 别名 分支同送本地库内容到远程库
git clone 远程库地址克隆远程库内容到本地库
git pull 别名 分支名将远程库对于分支最新的内容拉下来后与本地分支直接合并

(1)设置远程库别名
前面远程库的地址太长了,不太好记,使用如下命令给刚才的远程库取个别名。

git remote add demo1 https://github.com/caiheyu/demo1.git

(2)查看当前所有远程地址的别名
创建好别名后,查看一下是否成功
在这里插入图片描述
可以看到成功创建别名,为什么有两个呢,推送和拉取分别有一个。

(3)推送到远程库
使用push命令可以将指定分支上的内容推送到远程库,演示一下将master分支推送到远程库

git push demo1 master

第一次推送会让你登录绑定你的账号,然后就会开始推送,由于githup是国外网站,第一次推送可能会超时,多试几次。
在这里插入图片描述
出现这个信息就代表成功了,浏览器打开远程库地址刷新一下就可以看到文件被推送到远程库了。
在这里插入图片描述
注:上传远程库到远程库的内容,我们可以在网页直接打开,也可以在网页进行修改。

(4)拉取(pull)远程库到本地库
当远程库中的内容修改以后,和本地库中的内容不同,就可以拉取远程库的更改的内容到本地库,命令如下:

git pull 远程库别名 分支名

测试:
在网页修改一下远程库内容(模拟远程库内容被修改)
在这里插入图片描述
在文件末尾加上一句话,然后回到本地库目录,打开git bash,输入拉取命令。
在这里插入图片描述
出现上述结果就证明拉取成功了。

(5)克隆远程库到本地库
将远程库的内容克隆到本地库。命令如下:

git clone 远程库地址

注:克隆远程库内容不需要登录账号也能克隆;clone命令会自动帮你初始化本地库;也会自动帮你为远程库地址设置别名,可以自己查看别名。

邀请别人加入团队

如果想让别人也能往你的远程库上push代码,首先你要邀请他成为你的团队成员。步骤如下:
(1)登录你的githup网站,找到你的远程库,点击settings
在这里插入图片描述
(2)点击Collaborators
在这里插入图片描述
(3)输入密码
在这里插入图片描述
(4)选择添加成员
在这里插入图片描述
(5)搜索成员的用户名,找到后添加到团队
在这里插入图片描述
(6)点击复制邀请链接
在这里插入图片描述
(7)将链接发送给成员点击即可

跨团队协作

跨团队协作,就需要两个远程库之间的沟通了,需要的请求有fork、pull request、merge操作。
(1)fork操作,拉取别的远程库内容到自己的远程库
首先打开githup官网
在这里插入图片描述
在网站的左上角可以搜索所有的远程库,随便搜索一个,点击进入到它们的远程库。
在这里插入图片描述
进入别人的远程库,在右上角,有个Fork,点击,就会进入一个界面,引导你创建一个Fork,也就是让你再创建一个新的远程库。
在这里插入图片描述
点击“Create fork”即可完成fork操作。
(2)pull request
完成fork操作后,我们就相当于将别人的远程库内容复制到自己新建的远程库中了,就可以对其进行修改了,就当成自己的远程库操作就行了,修改完成后,我们可以发起pull request请求给原先远程库的创建者。如下
在这里插入图片描述
点击第二个“pull requests”。

(3)merge合并
当我们发送pull request请求后,原创建者会收到我们发送的消息,会在这个“pull requests”显示,然后可以点进去查看,可以查看有哪些改变,并可以选择与自己远程库的内容合并。
在这里插入图片描述

ssh免密登录

之前我们拉取和推送都是使用的HTTPS协议,那么使用SSH和HTTPS有什么不同呢。主要有如下两点

  • HTTPS:拿到url就可以随便clone,但是在push的时候需要验证Github的用户名和密码;
  • SSH:Github 需要添加本机的 SSH key; 如果配置SSH key的时候设置了密码,在push的时候需要输入密码,否则直接push。

简单来说,ssh使用较为方便安全。

接下来测试如何使用SSH进行推送。
(1)打开家目录(C盘user目录下和你用户名同名的目录),新建一个目录名为“.ssh”.。
(2)进入.ssh目录,打开git bash,输入如下命令

ssh-keygen -t rsa -C CaiCai

-t指定生成密钥的算法,-C指定标识或注释,可以随意写。
确认执行后,按三次回车。

(3)运行命令后会在该目录生成两个文件,一个公钥、一个私钥。
在这里插入图片描述
以“.pub”结尾的是公钥,用记事本打开公钥,复制里边的内容。
(4)打开githup官网,进行如下设置:
点击右上角头像->settings->SSH adn GPG keys->New SSH key
在这里插入图片描述
Title随便输一个,将复制的公钥放在key下。点击添加。
在这里插入图片描述
验证一下密码。然后就添加成功了,就可以使用ssh进行传输了。

(5)设置完成后,打开测试的远程库,复制ssh远程库地址。
(6)在本地修改文件后,利用ssh远程库地址推送内容到远程库。
修改文件,提交到本地库,然后使用SSH地址推送到远程库
在这里插入图片描述
在这里插入图片描述
(7)打开远程库,查看文件内容是否提交成功。
在这里插入图片描述
注:ssh远程库地址也可以设置别名。

IDEA集成Git

配置忽略文件

什么是忽略文件?为什么要忽略它们?
就是当我们将项目推送到远程库时,要忽略一些文件不将它们上传,这些文件与项目的实际功能无关,不参与服务器上部署运行。把他们忽略掉能够屏蔽IDE工具之间的差异。

怎么忽略?
(1)创建忽略规则文件“xxx.ignore”。前缀名可以随便起,建议是git.ignore。
文件放在那里都可以,但是为了便于寻找,建议也放在家目录下。
(2)配置文件模板内容规则如下:

#号表示注释
*.log表示忽略以log为后缀的文件,也可以指定某个具体的文件名,表示忽略这个文件
要忽略某个目录或文件直接写它的路径和名称就行,
!表示取反,即不忽略某个文件。比如你忽略了某个目录,在这个目录中有一个文件你不想忽略,就可以使用该符号。

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
###############
*.jar
*.war

(3)创建好文件后,将文件配置到".gitconfig"文件中(家目录下),打开“.gitconfig”文件,在文件末尾加上如下格式的内容

[core]
	excludesfile = ignore文件的全路径

注意,路径要使用“/”分隔。

配置git程序路径

打开IDEA,创建一个普通的maven项目,点击settings设置,如下:
在这里插入图片描述
点击测试看是否出现你的git版本,然后点击应用、确定。

初始化本地库

在这里插入图片描述
不需要使用git bash中的命令了,直接在VCS中创建仓库。

添加暂存区、提交本地库

添加暂存区:
在这里插入图片描述
初始化本地库后,可以看到文件变红了,变红意味着没有被添加到暂存区。可以右键该文件,选择如下设置即可添加到暂存区。
在这里插入图片描述
提交本地库:
在这里插入图片描述
添加暂存区的文件就变绿了,变绿是还没有提交本地库,接下来演示提交本地库
在这里插入图片描述
选择提交后,输入日志,点击提交。
在这里插入图片描述
也可以右键,将整个文件夹提交。

切换版本

在这里插入图片描述
点击左下角的Git,在里边选择想要回退的版本,右键选择签出。

分支操作

创建分支&&切换分支

创建分支:
在这里插入图片描述
点击右下角的分支名,可以创建新分支
在这里插入图片描述
切换分支:
在这里插入图片描述
右下角点击分支,选择想要切换的分支,选择签出。

分支合并

切换到主分支,点击其他分支选择合并到master
在这里插入图片描述
如果分支有冲突,会提示我们手动合并

远程库

设置GitHub账号

设置->版本控制->GitHub->添加账户
在这里插入图片描述
建议选择令牌登录,点击生成会跳转网页
在这里插入图片描述
网页填好后选择生成token。
在这里插入图片描述
复制token粘贴到IDEA就行了。

创建远程库

在这里插入图片描述
填写仓库名,远程地址别名和描述,点击共享,就会在你的githup账户中自动创建一个远程库。
在这里插入图片描述

推送

在这里插入图片描述
可以自定义远程库别名,本来是origin,是使用HTTPS推送的,我们可以将仓库的SSH链接复制下来,定义一个别名。
在这里插入图片描述
我定义了一个别名origin-ssh使用的是ssh的链接。
在这里插入图片描述
点击推送。

拉取

在这里插入图片描述
选择合并到当前分支,然后就可将远程仓库最新的内容拉取到本地。
在这里插入图片描述

克隆

新建项目,选择从VCS获取。
在这里插入图片描述
填写URL和选择本地仓库目录。
在这里插入图片描述
点击确定,即可自动克隆远程库代码到本地。

码云Gitee

概述

码云是一个国内的代码托管中心,如果无法使用GitHub,可以考虑使用码云。
点击跳转码云官网

要使用码云要先注册账号,使用也和githup网站基本一样,布局也都挺像。

IDEA集成码云

安装插件

在这里插入图片描述
安装完插件后重启,进入设置界面,绑定gitee账号
在这里插入图片描述
同样也是可以使用账号密码登录或者token口令登录。token需要去网站生成,生成口令具体步骤如下:
右上角头像->账号设置->私人令牌->生成新令牌
在这里插入图片描述
写上描述,点击提交,复制口令粘贴到IDEA中。

常用操作

创建仓库
在这里插入图片描述
和github基本一样

推送push
推送和github时一样,就是选择远程地址别名时,自定义一个gitee的地址,选择gitee的地址推送就行。
在这里插入图片描述
拉取pull
拉取和使用github一样,直接点击拉取图标。
在这里插入图片描述

克隆
和使用github步骤一样。选择从VCS获取。
在这里插入图片描述
也可在项目内新建,选择来自版本控制的项目。
在这里插入图片描述

然后,输入URL时选择gitee的远程库地址
在这里插入图片描述
点击确定即可从gitee克隆项目到本地。

导入GitHub项目

可以直接导入GitHub远程仓库到Gitee中。
在这里插入图片描述
右上角“+”号,选择“从GitHub/GitLab导入仓库”。
在这里插入图片描述
复制github远程库的地址,粘贴到这来,点击导入即可导入成功。
在这里插入图片描述
导入成功后,点击仓库名右边的符号可以强制更新,就是如果githup仓库更新内容了,我们可以点击这个符号也更新gitee上的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值