Git 学习笔记 涵盖IDEA 集成 GitHub、Gitee(码云)、GitLab

1. Git概述

​ Git是一个免费的,开源的分布式版本控制系统,可以快速高效地处理从小型或大型的各种项目。Git易于学习,占用空间小,性能快得惊人。

​ Git软件比Subversion、CVS、Perforce和ClearCase等SCM(Software Configuration Management软件配置管理)工具具有性价比更高的本地分支、方便的暂存区域和多个工作

2. Git基础概念

Git是一个免费的,开源的分布式版本控制软件系统,学习Git软件的具体操作前,我们需要对一些基础的概念和名词进行解释

2.1 版本控制

一般情况下,一份文件,无论是DOC办公文档,还是编程源码文件,我们都会对文件进行大量的修改和变更。但是我们无法保证每一次的修改和变更都是正确并有效的,往往有的时候需要追溯历史操作,而版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。

2.2 分布式

在Git中,每个版本库都是一样重要得。所以就不存在像集中式版本控制软件中以谁为主得问题。任何一个库都可以当成主库。

这种方式可以更大限度地保证项目资源得安全。

2.3 系统

一般软件系统指的是可以独立运行的软件应用程序。而Git软件就是专门用于对代码文件进行版本控制得应用程序。同时也提供客户端对系统所管理得资源进行访问。

2.4 区域

img 1695281395751

**代码托管中心:**也叫远程仓库,如:GitLab、GitHub、Gitee。通过push提交到远程仓库

**存储区域:**Git软件用于存储资源得区域。一般指得就是.git文件夹(提交后就会存在一个历史版本)

**工作区域:**Git软件对外提供资源得区域,此区域可人工对资源进行处理。(指存放在磁盘中的目录,也就是你存放代码的位置)

**暂存区域:**Git用于比对存储区域和工作区域得区域。Git根据对比得结果,可以对不同状态得文件执行操作。(将工作区的代码添加到暂存区,是一个临时存储,是不会存在提交的历史版本)

代码托管中心

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

  • 局域网
    • GitLab
  • 互联网
    • GitHub(外网)
    • Gitee 码云(国内网站)

3. Git安装

3.1 软件下载

软件官网地址为https://git-scm.com/

软件下载地址为:

https://github.com/git-for-windows/git/releases/download/v2.42.0.windows.2/Git-2.42.0.2-64-bit.exe

3.2 软件安装

双击exe执行文件

Git软件安装的步骤虽然比较多,但是整个安装过程还是比较简单的,双击exe执行文件,按照引导界面的提示安装即可

image-20230921164235652
选择安装目录

默认安装在c盘中。(建议安装到没有中文和空格的目录下,如:D:\develop\codeManage\Git)

image-20230921165118867
选择git组件
image-20230921172837889
配置启动菜单

默认即可,点击Next下一步

image-20230921173112819
配置编辑器工具

配置编辑器工具,这里选择自己习惯的编辑工具即可。(我这里选了Vim做为默认编辑器),点击Next下一步

image-20230921173345459
选择仓库初始化名称

默认即可,也可以选择第二个自定义,点击Next下一步

image-20230921173911412
调整 path 环境变量

第一种是仅从 Git Bash 使用 Git。这个的意思就是你只能通过 Git 安装后的 Git Bash 来使用 Git ,其他的什么命令提示符啊等第三方软件都不行。

第二种是从命令行以及第三方软件进行 Git。这个就是在第一种基础上进行第三方支持,你将能够从 Git Bash,命令提示符(cmd) 和 Windows PowerShell 以及可以从 Windows 系统环境变量中寻找 Git 的任何第三方软件中使用 Git。推荐使用这个。

第三种是从命令提示符使用 Git 和可选的 Unix 工具。选择这种将覆盖 Windows 工具,如 “ find 和 sort ”。只有在了解其含义后才使用此选项。一句话,适合比较懂的人折腾。

image-20230921174718298
选择 SSH 执行文件

默认即可,点击Next下一步

image-20230921181129830
选择后台客户端连接协议

默认即可,点击Next下一步

image-20230921181334028
配置行尾符号转换

默认即可,点击Next下一步

image-20230921181907775
配置终端模拟器

配置终端模拟器以与 Git Bash 一起使用,默认即可,点击Next下一步

MinTTY 具有可调整大小的窗口和其他有用的可配置选项,可以通过右键单击的工具栏来打开它们 git-bash。

image-20230921182203822
拉取合并的行为

选择默认的 “git pull” 行为,点击Next下一步

image-20230921182509381
选择一个凭证帮助程序

可以记录登录行为,默认即可,点击Next下一步

image-20230921182834014
配置额外的选项

默认即可,点击Next下一步

image-20230921183606027
实验室功能

不建议开启,可能存在一些bug,默认即可,点击Next下一步

image-20230921184002540
安装中
image-20230921184133688
安装完成
image-20230921184318520

右键即可查看是否安装成功, 开始菜单可查看相关功能

image-20230921190424433 image-20230921190733775

4. 基础指令

Git软件是免费、开源的。最初Git软件是为辅助 Linux 内核开发的一套软件,所以在使用时,简单常用的linux系统操作指令是可以直接使用的

指令含义说明
cd 目录change directory改变操作目录
cd …退回到上一级目录
pwdPrint work directory打印工作目录
lslist directory contents显示当前目录的文件及子文件目录
llls -l 简化版本更详细地显示当前目录的文件及子文件目录
mkdir 文件夹名称make directory新建一个文件夹
rm 文件remove删除文件
rm -r 文件夹Remove删除文件目录
touch 文件如果创建的文件不存在,那么创建一个空文件
reset清屏
clear清屏
exit退出终端窗口

5. Git 常用命令

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户email地址
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m “日志信息” 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

5.1 设置用户签名

git config --global user.name test #有户名
git config --global user.email test@test.com

这里的–global表示全局配置,后续的所有文件操作都会使用该用户名称及邮箱。此时在操作系统的用户目录,会产生新的配置文件。

配置文件路径:‪‪C://Users//用户名//.gitconfig

image-20230921233726944

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

注意: 这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。

5.2 通过命令查看配置信息

我们可以通过指令获取软件的配置信息:

git config -l

image-20230921231356317

5.3 初始化本地库

Git软件主要用于管理文件的版本信息,但它只是一个软件,不可能安装后就直接将系统中所有的文件全部纳入到它的管理范畴中。并且,软件管理版本信息的主要目就是管理文件的修改和变更,如果将系统中所有文件都进行管理其实意义是不大的。所以一般情况下,我们需要指定某一个文件目录作为软件的管理目录。因为这个目录主要就作为Git软件的管理文件的版本变化信息,所以这个目录也称之为Git软件的版本仓库目录。

1)基本语法

git init

2)案例实践

执行初始化命令后会创建一个 .git 的隐藏目录,通过 ll -a 命令可查看隐藏目录

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo
$ git init
Initialized empty Git repository in D:/workspace/git-Space/git-demo/.git/

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ ll -a
total 4
drwxr-xr-x 1 xl 197121 0 Sep 21 23:46 ./
drwxr-xr-x 1 xl 197121 0 Sep 21 23:45 ../
drwxr-xr-x 1 xl 197121 0 Sep 21 23:46 .git/

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)

或者通过磁盘勾选隐藏项目也可查看

image-20230921235044715

5.4 查看本地库状态

基本语法

git status

image-20230922001933122

5.5 添加到暂存区

git add 文件名

image-20230922002045530

执行添加到缓存区命令

image-20230922002423481

删除暂存区文件命令

image-20230922003712634

5.6 提交本地库

基本语法

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

image-20230922005829964

5.7 查看历史版本

基本语法

git reflog

image-20230922010037310

查看版本详细日志

基本语法

git log

image-20230922120845290

5.8 修改文件

注意: 修改提交后这里提示 1 file changed, 1 insertion(+), 1 deletion(-)

是因为 Git 里面是通过行来维护文件的,没法表达出来,所以这里是先把需要修改的行删掉,再把修过的行复制进来。

image-20230922122600455

5.9 版本穿梭

基本语法

git reset --hard 版本号
# 首先查看当前的历史记录
xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git reflog
6284637 (HEAD -> master) HEAD@{0}: commit: third commit
91b3585 HEAD@{1}: commit: second commit
494dc4a HEAD@{2}: commit (initial): first commit

# 切换到 91b3585 版本,也就是第一次提交的版本
xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git reset --hard 91b3585
HEAD is now at 91b3585 second commit

# 切换完毕之后再查看历史记录,已成功切换 b0006bc 版本
xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git reflog
91b3585 (HEAD -> master) HEAD@{0}: reset: moving to 91b3585
6284637 HEAD@{1}: commit: third commit
91b3585 (HEAD -> master) HEAD@{2}: commit: second commit
494dc4a HEAD@{3}: commit (initial): first commit

# 再次查看文件 hello.txt,文件内容回滚到第一版本
xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ cat hello.txt
hello,git! 11111
hello,git!
hello,git!
hello,git!
hello,git!

image-20230922130450910

Git 切换版本, 底层其实是移动的 HEAD 指针。

6. Git分支

image-20230922140508143

什么是分支

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

img

分支的好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

6.1 分支的操作命令

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

6.2 查看分支

基本语法

git branch -v

案例实操

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git branch -v
* master 91b3585 second commit

image-20230922141152671

6.3 创建分支

基本语法

git branch 分区名

案例实操

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git branch hot-fix

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git branch -v
  hot-fix 91b3585 second commit
* master  91b3585 second commit

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)

image-20230922141742835

image-20230922141808190

刚创建的新的分支,并将主分支master的内容复制了一份

6.4 切换分支

基本语法

git checkout 分支名

案例实操

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ git branch -v
* hot-fix 91b3585 second commit
  master  91b3585 second commit

成功切换分支

image-20230922143305089

修改分支文件

案例实操

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ vim hello.txt

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ git status
On branch hot-fix
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ git add hello.txt

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ git status
On branch hot-fix
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   hello.txt


xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ git commit -m "hot-fix first commit" hello.txt
[hot-fix 607fa6f] hot-fix first commit
 1 file changed, 1 insertion(+), 1 deletion(-)

image-20230922144917522

6.4 合并分支

基本语法

git merge 分支名称

案例实操

# 首先需要切换主分支
xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ git checkout master
Switched to branch 'master'

# 在主分支执行合并分支命令
xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git merge hot-fix
Updating 91b3585..607fa6f
Fast-forward
 hello.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

# 查看合并后的内容
xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ cat hello.txt
hello,git! 00000
hello,git! 00000
hello,git!
hello,git!
hello,git!

image-20230922145652403

6.5 合并冲突

冲突产生的原因

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。 Git 无法替我们决定使用哪一个,因此,必须人为决定新代码内容。

产生冲突

首先,在master修改文件hello.txt最后一行内容,并提交:

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ vim hello.txt

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git add hello.txt

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git commit -m "matser test" hello.txt
[master a16a83e] matser test
 1 file changed, 2 insertions(+), 2 deletions(-)

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ cat hello.txt
hello,git! 00000
hello,git! 00000
hello,git!
hello,git! mater test
hello,git!

image-20230922150928957

然后,在hot-fix修改文件hello.txt最后一行内容,并提交:

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ vim hello.txt

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ git add hello.txt

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ git commit -m "hot-fix test" hello.txt
[hot-fix abe38bf] hot-fix test
 1 file changed, 1 insertion(+), 1 deletion(-)

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ cat hello.txt
hello,git! 00000
hello,git! 00000
hello,git!
hello,git!
hello,git! hot-fix test

image-20230922151854372

合并分支

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (hot-fix)
$ git checkout master
Switched to branch 'master'

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)
$ git merge hot-fix
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master|MERGING)
$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

image-20230922152549444

手动合并代码,解决分支冲突

1)编辑文件:vim hello.txt

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master|MERGING)
$ vim hello.txt

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master|MERGING)
$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master|MERGING)
$ git add hello.txt

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master|MERGING)
$ git commit -m "merge test" hello.txt
fatal: cannot do a partial commit during a merge.

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master|MERGING)
$ git commit -m "merge test"
[master d0809be] merge test

xl@LAPTOP-GT7T6793 MINGW64 /d/workspace/git-Space/git-demo (master)

image-20230922153304070

修改后文件

image-20230922153647392

完成合并

注意

1)解决冲突后,提交到本地库命令不能带文件名,否则会报错

2)合并后只会修改合并分支的代码,被合并的分支不会被修改

image-20230922154408206

7. Git 团队协作机制

7.1 团队内协作

img

7.2 跨团队协作

img

8. GitHub

GitHub 网址:https://github.com/

GitHub 国内镜像网址:https://hub.yzuu.cf/

8.1 创建远程库

image-20230922161235298

image-20230922161754616

8.2 创建别名

git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址

# 删除远程库
git remote rm 别名
image-20230922162422687

8.3 推送本地库到远程库

git push 别名 分支

网络不好可能提交失败,再次提交即可

image-20230922194320816 image-20230922194029583 image-20230922194151721 image-20230922194714594

8.4 拉取远程库

基本语法

git pull 别名 分支

1)首先在GitHub上修改一下文件并提交

image-20230922200011507

2)拉取

image-20230922195704547

8.5 克隆远程仓库到本地

基本语法

git clone 远程地址

获取远程库地址URL 进行克隆

image-20230922233137881image-20230922233404852

小结: clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名

8.6 团队内协作

1)选择邀请协作者

image-20230923001252279

2)搜索用户

image-20230923001236794

3)发送邀请

image-20230923001443868

4)查看邀请信息并接受邀请

image-20230923123558854image-20230923002125929

演示 协作者修改代码

image-20230923130211651

8.7 远程仓库fork操作

fork操作等同于创建了一个自己的远程仓库。但是这个远程仓库等同于是一个分支远程仓库,你可以随便操作,并不会影响源仓库,但是如果你的修改,更新想要融合到源仓库中,就需要提交申请了

image-20230923132410005

点击Create fork按钮即可

image-20230923132433139

演示

我们这里首先将文件改一下。

image-20230923133531067

发送提交申请

image-20230923134202570

image-20230923134446223

image-20230923134801873

合并修改请求

image-20230923135913715

image-20230923140921334

image-20230923141637186

image-20230923141804617

image-20230923141954981

8.8 SSH免密操作

github支持两种同步方式“https”和“ssh”。如果使用https很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。ssh模式比https模式的一个重要好处就是,每次push、pull、fetch等操作时,不用重复填写遍用户名密码。前提是你必须是这个项目的拥有者或者合作者,且配好了ssh key。

1)点击SHH提示我们使用SHH首先需要添加SHH密钥

image-20230923155446433

2)先到系统盘,删除.ssh文件夹 如:C:\Users\用户名\.ssh(如果没有.ssh文件夹,忽略此步):

3)打开 Git Bash Here 终端

image-20230923160457169

创建密钥命令语法

ssh-keygen -t rsa -C test@gmail.com

# ssh-keygen:生成SSH协议免密登录的命令。
# -t:表示使用哪种加密协议。 
# rsa:是一种非对称加密协议。 
# -C:添加描述,在这里添加了 test@gmail.com,说明当前这个免密登录协议主要是专门针对test@gmail.com这个账号分配的。

执行命令ssh-keygen生成.ssh目录:三次回车键即可

image-20230923161711630

执行命令完成后,在window本地用户.ssh目录C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥:

image-20230923163354700

按照操作步骤,将id_rsa.pub文件内容复制到GitHub仓库中

image-20230923164020993

image-20230923164615975

image-20230923164541264

添加公钥后,可不用输入Github账号密码便可推送。

接下来通过SSH方式拉取hello.txt。

image-20230923165849068

接下来通过SSH方式推送hello.txt。

image-20230923170743351

接下来再往远程仓库push东西的时候使用SSH连接就不需要登录了。

9. IDEA集成Git

9.1 IDEA集成Git_配置 Git 忽略文件

配置 Git 忽略文件的作用是帮助开发者在版本控制过程中排除不需要跟踪的文件,从而提高工作效率、简化工作流程,并保护项目的安全和隐私。与项目的实际功能无关,不参与服务器上部署运行。

创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是 git.ignore)

这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户家目录下。

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
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml

在.gitconfig 文件中引用忽略配置文件(此文件在 Windows 的家目录中)

[user]
    name = Layne
    email = Layne@atguigu.com
[core]
	excludesfile = C:/Users/asus/git.ignore

注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”

9.2 在IDEA配置Git程序

这里采用的IDEA版本为2023.2,其他版本的IDEA软件会略有差别

image-20230923174658244 image-20230923175708742

9.3 IDEA集成Git_初始化

按步骤操作即可

image-20230923181610702 image-20230923183445964

初始化完成

image-20230923183708973

2020版本的idea初始化仓库 在菜单栏VCS -> Import into Version Control -> Create Git Repository 如图:

1695466014275

9.4 IDEA集成Git_添加到暂存区

这里也可以选择整个根目录将所有文件添加到暂存区,添加到暂存区的文件会变成绿色;蓝色字体表示文件被追踪了,但是被修改了;黄色字体的文件代表忽略文件。

image-20230923204008428

9.5 IDEA集成Git_提交到本地库

image-20230923191330719 image-20230923204935173

修改代码后需要提交,步骤和上面是一样的。

image-20230923204926927

9.6 IDEA集成Git_切换版本

切换版本

image-20230923211817206

选中版本右键点击 Checkout Revision ‘****’

image-20230923220631563

成功切换版本

image-20230923221115453

9.7 IDEA集成Git_创建/切换分支

9.7.1 IDEA集成Git_创建分支

1)创建分支 方法一

image-20230923231011354 image-20230923232855697 image-20230923235515753

2)创建分支 方法二

image-20230923234050564image-20230923234334461image-20230923234608913

9.7.2 IDEA集成Git_切换分支

image-20230923235858868 image-20230924000136991

9.8 IDEA集成Git_合并分支

正常合并

直接并即可,在合并分支查看合并后的代码

image-20230924003733952

冲突合并

分别在master,hot-fix分支修改同一个类的同一个文件,并提交,故意制作冲突:

image-20230924133057094 image-20230924133108018

切换到master分支,将hot-fix-2的合并到master分支:

image-20230924134222803

冲突产生,需要手动解决

image-20230924134658101

手动处理冲突合并

image-20230924140247469

处理完成,点击应用

image-20230924141035001

代码冲突解决,自动将代码提交本地库,这时可以看到代码更新了,日志信息也将两个分支合并成了一个版本

image-20230924142641400

10. IDEA集成GitHub

10.1 IDEA集成GitHub_通过账号授权登录

菜单栏File->Setting->选中GitHub,添加GitHub账号:

网络问题可能无法授权。

image-20230924163218169

授权 GitHub,由于网络问题,会时无法进入授权页面。

image-20230924163409297 image-20230924163705854

输入 GitHub 密码

image-20230924163835289 image-20230924164247946

添加完成

image-20230924164006687

10.2 IDEA集成GitHub_通过口令授权登录

可解决因网络无法授权问题

image-20230924164954296

生成口令步骤

image-20230924170212879

我不需要那么细化,我就选择一般用途的

image-20230924170820312

这里记得把所有权限都 ✓ 上

image-20230924172513361

复制创建的口令

image-20230924172814419

填入口令授权,添加完成后记得点击 OK 或者 apply , 否则无法保存授权的账号

image-20230924171521839 image-20230924171547732

10.3 IDEA集成GitHub_分享工程到GitHub

分享到远程仓库,建议别名和远程库名字保持一致

image-20230924174450239 image-20230924174816206

image-20230924182936206

推送完成

image-20230924182517585

10.4 IDEA集成GitHub_推送代码到远程库

image-20230924184741425

添加 SSH 协议

image-20230924185420793 image-20230924185805265

选用刚才添加的 SHH 协议

image-20230924190326185

查看远程库,代码已更新

image-20230924191434234

注意: push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的。也就是说, 要想 push 成功,一定要保证本地库的版本要比远程库的版本高! 因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!

10.5 IDEA集成GitHub_拉取远程库到本地

注意: pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。

image-20230924234447818 image-20230924235155719

10.6 IDEA集成GitHub_克隆远程仓库到本地

image-20230925000752082image-20230925000448903

11. Gitee(码云)集成

简介

​ 相对于GitHub来讲,由于网络的原因,我们在连接时不是很稳定,所以我们在采用第三方远程仓库时,也可以选择国内的Gitee平台。

​ 码云是开源中国推出的基于 Git 的代码托管服务中心, 网址是 https://gitee.com/ ,使用方式跟 GitHub 一样,而且它还是一个中文网站,如果你英文不是很好,它是最好的选择。

11.1 Gitee账号注册

根据提示自行注册

image-20230925002220818

11.2 Gitee创建仓库

使用方式和GitHub一样

image-20230925002655939 image-20230925002800409

11.3 IDEA 安装 Gitee 插件

首先,要在IDEA安装Gitee插件。

在菜单栏选File->Settings->Plugins,搜Gitee。

如果插件没有安装成功,可能是你忘记保存了,记得点一下OK,或者重启一下 IDEA

1695573870287

11.4 IDEA 配置Gitee账户授权

image-20230925005102134

11.5 IDEA 推送代码到Gitee远程库

image-20230925005939649 image-20230925143130009

11.6 Gitee导入gitHub、GitLab项目

在新建仓库中点击导入,在URL 粘贴代码远程库的 hppt 协议地址 即可

image-20230925143914184 image-20230925144214113

后续可通过此方式再次同步代码

image-20230925145234908

12. GitLab

GitLab介绍

​ GitLab是由GitLabInc开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

​ GitLib由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它使用Ruby语言写成。后来,一些部分用Go语言重写。GitLab被IBM,Sony,JulichResearchCenter,NASA,Alibab,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX等组织使用。

GitLab官网地址

官网地址:https://about.gitlab.com/

GitLab 安装

GitLab安装准备
准备一个系统为 CentOS7 以上版本的服务器, 要求内存 4G,磁盘 50G。
关闭防火墙, 并且配置好主机名和 IP,保证服务器可以上网。
此教程使用虚拟机:主机名: gitlab-server IP 地址: 192.168.6.200

安装包准备

Yum 在线安装 gitlab- ce 时,需要下载几百 M 的安装文件,非常耗时,所以最好提前把所需 RPM 包下载到本地,然后使用离线 rpm 的方式安装。

官网下载地址:https://packages.gitlab.com/gitlab/gitlab-ce

百度云下载:https://pan.baidu.com/s/1MPtH-MoISMSq-q5jDWZJ1w 提取码:prxk

阿里云下载:https://www.aliyundrive.com/s/c4VixdVB3hv

注:资料里提供了此 rpm 包,直接将此包上传到服务器/opt/module 目录下即可。

上传安装包

创建目录

mkdir /opt/module

image-20230925162740806

编写安装脚本

安装 gitlab 步骤比较繁琐,因此我们可以参考官网编写 gitlab 的安装脚本

找不到 vim 命令执行: sudo yum install vim -y 进行安装

cd /opt/module
vim gitlab-install.sh
# 找不到 vim 命令执行: sudo yum install vim -y  进行安装

脚本内容:

sudo rpm -ivh /opt/module/gitlab-ce-16.4.0-ce.0.el7.x86_64.rpm

sudo yum install -y curl policycoreutils-python openssh-server cronie

sudo lokkit -s http -s ssh

sudo yum install -y postfix

sudo service postfix start

sudo chkconfig postfix on

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ce
image-20230926174433340

给脚本增加执行权限

chmod +x gitlab-install.sh
image-20230925161733653

执行脚本,开始安装 gitlab-ce,注意一定要保证服务器可以上网

./gitlab-install.sh
image-20230925163126115

脚本执行失败时可尝试更换一下 yum 源 再执行一下脚本

# 1. 备份系统自带的源
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

# 2. 下载国内yum源配置文件到/etc/yum.repos.d/(阿里) 和下一条命令2选1即可
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 如果提示没有wget,可以使用curl下载 和下上一条命令2选1即可
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 3. 清理yum缓存,并生成新的缓存
yum clean all

yum makecache

初始化GitLab服务

(可能出现缺少/etc/sysctl.conf文件导致的问题,再执行一次即可)

gitlab-ctl reconfigure

执行命令后等待几分钟

image-20230925170814893

出现 gitlab Reconfigured! 表示初始化完成

1695634198212

启动GitLab服务

执行以下命令启动 GitLab 服务,如需停止,执行 gitlab-ctl stop

# 启动
gitlab-ctl start
# 停止
gitlab-ctl stop
image-20230925173533134

访问GitLab

使用浏览器访问GitLab,输入网址:http://ip/users/sign_in (**注意:**老版本的直接输入ip访问GitLab,进入就会让你更改root密码)

image-20230925174906850

初始化时,软件会提供默认管理员账户:root,但是密码是随机生成的。

image-20230925174242961

根据提示,在/etc/gitlab/initial_root_password文件中查找密码

image-20230925174653211

输入账号,密码,进入系统

image-20230925175331224

修改密码

默认的密码是随机的,且不容易记忆,还会在系统初始化后24小时被删除,所以需要先修改一下密码。修改完重新登陆即可

image-20230925180151881 image-20230925174906850

创建仓库

image-20230926185114038 image-20230926185317923

image-20230926190909752

创建完成

image-20230926192227795

IDEA 安装 GitLab 插件

image-20230926204033267

IDEA 配置GitLab账户授权

创建token的流程在下面

image-20230926210051772

添加token

image-20230926210656052 image-20230926210637405 image-20230926211039634

完成登陆

image-20230926211145766

设置远程连接

image-20230926212124408

image-20230926212333746 image-20230926212348375

推送到远程库

image-20230926212637281

只要 GitLab 的远程库连接定义好以后,对 GitLab 远程库进行 pull 和 clone 的操作和 Github和码云一致, 此处不再赘述。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值