超详细的Git学习记录(Git基础内容/IDEA集成Git/GitHub/Gitee/GitLab及Centos7部署GitLab)

超详细的Git学习笔记

从B站搜到的尚硅谷视频学习了Git,记录了一下学习的内容,收获很大

学习地址:
https://www.bilibili.com/video/BV1vy4y1s7k6?p=11&share_source=copy_web

Git介绍 分布式版本控制工具 VS集中式版本控制工具

  • Git是什么?

免费开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目

  • Git有什么优点?

易于学习,占地面积小,性能极快。具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion 、CVS、Perforce和ClearCase 等版本控制工具

  • 什么是版本控制?

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

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

    (情景:自己在写东西时,不确定修改后的下一版本是否比上一个版本好,这时候就需要退回上一个版本,把每个版本的文件都另存一份,就能轻松退回上一个版本,就能实现一个简单的版本控制)

  • 为什么要用到版本控制工具?

    个人开发过渡到团队协作

    (情景:在团队协作开发的时候,甲乙两个同学都需要修改自己那部分内容,他们将原先的内容从公司的服务器上下载下来,然后进行修改,修改完成时,如果甲乙都上传文件并覆盖,那么必定有一个同学的被另一个同学的替换掉,这时候就需要版本控制工具,来将两个人修改的结合起来)

  • 版本控制工具

    • 集中式版本控制工具

      CVS、SVN(Subversion)、VSS…

      都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们通过客户端连接到这台服务器,取出最新的文件或者提交更新。

      • 好处:每个人都可以在一定程度上看到项目中其他人正在做什么,管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来的轻松容易

      • 坏处:中央服务器的单点故障。如果服务器一小时不能工作,那么这一个小时内,谁都无法提交更新,也就无法协同工作.

    • 分布式版本控制工具

      Git、Mercurial、Bazaar、Darcs…

      每台客户端就是一个代码库,每个人在自己的本地计算机上做版本控制,在写代码之前,要把远程库上的代码克隆下来到自己的本地库,然后基于自己的本地库做版本控制,在自己的电脑上写好后,再推送到远程库,就算远程库没了,也可以再自己电脑上做版本控制。

      优点:每个人手上都有一份完整的,包含历史记录的代码

  • Git工作机制

    工作区(代码存放的本地目录) ——【通过git add命令添加到暂存区】—— 暂存区(在工作区写代码后,添加到暂存区,暂存区的代码是可以删除和修改的) ——【通过git commit命令提交到本地库,本地库的代码是不能删除和修改的】—— 本地库 ——【通过git push命令推送到远程库】——远程库
    在这里插入图片描述

  • Git和代码托管中心

    代码托管中心是基于网络服务器的远程代码仓库

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

Git安装 基于官网发布的最新版本2.32.0.2 安装

Git官网:Git (git-scm.com),可以在搜索引擎直接搜,通常第一个就是Git

下载安装步骤:

  • 进入官网后,点击右边的小电脑上面的Download for Windows,电脑就能自动下载Git

  • 下载完成后打开Git安装文件

  • 协议界面直接下一步

  • 选择好安装目录后下一步

  • Select Components选项内容勾选(使用默认的就行,然后直接下一步):

    -Additional icons    //创建快捷方式
    --On the Desktop    //桌面上
    -Windows Explorer integration //右键菜单    ✔
    --Git Bash Here    //Git的命令行客户端    ✔
    --Git GUI Here    //Git的GUI客户端(图形化界面)    ✔
    -Git LFS (Large File Support)    //大文件的支持    ✔
    -Associate .git* configuration files with the default text editor    //配置默认编辑器    ✔
    -Associate .sh files to be run with Bash    //关联.sh格式文件    ✔
    -Check daily for Git for Windows updates    //每天检查Git是否使用Windows更新
    -(NEW!)Add a Git Bash Profile to Windows Terminal    //(新!)将 Git Bash 配置文件添加到窗口终端
    
  • Select Start Menu Folder选择开始菜单的位置,下一步

  • Choosing the default editor used by Git选择默认编辑器,根据自己的情况而定 下一步(视频里用的Vim,也可以用自己熟悉的编辑器)

  • Adjusting the name of the initial branch in new repositories是否要修改初始化分支的名字 默认让Git决定就行 下一步

    -Let Git decide    //让Git决定,以后无论创建哪个库,都是用master作为名字(默认)
    
    -Override the default branch name for new repositories   //自定义初始化分支名字
    
  • Adjusting your PATH environment是否要修改环境变量 根据自己的情况而定 下一步

    -Use Git from Git Bash only    //只在Git Bash客户端里面使用Git(不会修改环境变量)(默认)
    -Git from the command line and also from 3rd-party software    //可以在Git Bash里面使用Git,也可以在第三方软件的控制台等里面使用Git 
    -Use Git and optional Unix tools from the command Prompt    //会修改掉一些Windows工具(一般不选这个)
    
  • Choosing HTTPS transport backend选择后台客户端连接协议,默认OpenSSL就行了 下一步

    -Use the OpenSSL library    //使用OpenSSL协议进行连接
    -Use the native Windows Secure Channel library 
    
  • Configuring the line ending conversion配置行末换行符 默认选第一个就行 下一步

    -Check Windows-style ,cimmit Unix-style line endings    //自动选择样式
    -Checkout as-is ,commit Unix-style line endings
    -Checkout as-is ,commit as-is
    
  • Configuring the terminal emulator to use with Git Bash配置Git Bash终端类型 默认选第一个就行 下一步

    -Use MinTTY(the default terminal of MSYS2)
    -Use Windows' default console window    //这个需要用dos命令
    
  • **Choose the default behavior of git pull**选择默认的从远程库拉取代码到本地库的行为 默认就行 下一步

    -Default(fast-forward or merge)
    -Rebase
    -Only ever fast-forward
    
  • Choose a credential helper凭据管理器 选第一个 下一步

    -Git Credential Manager Core    //选择跨平台的凭据管理器
    -Git Credential Manager    //选择windows的凭据管理器
    -None
    
  • Configuring extra options其他配置

    -Enable file system caching    //使用文件缓存机制,默认勾选
    -Enable symbolic links    //使用符号连接,勾选
    
  • Configuring experimental options 实验室功能 视频中不勾选 然后安装

    -Enable experimental support for pseudo consoles    //允许在Git Bash里面运行第三方程序
    -Enable experimental built-in file system monitor    //启用实验内置文件系统监视器  (自动允许内置文件系统监视器,以加快包含许多文件的工作树中的常见操作,如`git status` ,`git add`,`git commit`等   这个视频中的Git版本没有,应该可以勾选
    
  • 然后就安装完成了,安装完成后在桌面右击可以看到Git的快捷菜单

Git命令 基于开发案例 详细了解git的常用命令

命令名称作用
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 reset --hard 版本号版本穿梭
设置用户签名
  • 鼠标右击Git Bush Here

  • 输入下面的命令并回车(用户名和邮箱输入自己定的用户名和邮箱)

    git config --global user.name 【这里写用户名】
    
    git config --global user.email 【这里写邮箱】
    
  • 完成后可在用户C盘的用户目录下找到.gitconfig 里面存有自己的用户签名

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

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

初始化本地库
  • 在需要创建本地库的目录里右击打开Git Bush Here
  • 输入命令git init然后回车
  • 然后就能在目录下看到.git目录了,没有显示的可以点击菜单栏的 查看 —— 隐藏的项目
查看本地库状态

初始化好的本地库,就可以查看本地库的状态了,使用命令git status 就可以查看了

什么项目都没有创建的情况下 会显示

On branch master
No commit yet
nothing to commit (create/copy files and use "git add" to track)

可以创建一个文件在里面

然后再用git status

这时候会显示(发现一个未被追踪过的文件,需要用git add命令添加暂存区)

On branch master
No commit yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.txt

nothing added to commit but untracked files present (use "git add" to track)
添加暂存区

输入命令git add 【这里输入文件名】 我的是git add hello.txt,就把文件存到暂存区

warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory

git rm --cached 【文件名】可以删除暂存区的内容,git rm --cached hello.txt

删除后可以再用git add 【文件名】 添加到暂存区

提交本地库

使用命令git commit -m "日志信息" 文件名将暂存区的文件提交到本地库,形成自己电脑上的历史版本

git commit -m “first commit” hello.txt

执行后再允许 git status 会显示

On branch master
nothing to commit, working tree clean

可以通过 git reflog查看历史记录,输入后会显示

c5b235a (HEAD -> master) HEAD@{0}: commit (initial): first commit
//其中的前7位是缩减版的版本号,是版本号的前七位
//(HEAD -> master)代表指针指向当前版本

可以通过git log 查看版本的详细信息,输入后会显示

commit c5b235add282638e3f41d30ed3ebc2bb7a676f6e (HEAD -> master)  //版本号
Author: zqq <991521874@qq.com>
Date:   Mon Jul 19 16:29:03 2021 +0800

    first commit
修改文件

修改自己的文件,修改完保存,然后输入命令git status,会显示

On branch master
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")
//检测到文件被修改了,需要重新添加暂存区,提交本地库

使用git add hello.txtgit commit -m "second commit" hello.txt之后 显示如下

warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
[master 622bb3c] second commit
 1 file changed, 1 insertion(+), 1 deletion(-)

此时输入git log 就可以查看历史版本的详细信息,如下

commit 622bb3c70c8270ff345b61856c77787e8c77d10e (HEAD -> master)
Author: zqq <991521874@qq.com>
Date:   Mon Jul 19 16:41:51 2021 +0800

    second commit

commit c5b235add282638e3f41d30ed3ebc2bb7a676f6e
Author: zqq <991521874@qq.com>
Date:   Mon Jul 19 16:29:03 2021 +0800

    first commit
版本穿梭

使用 git reset --hard 【版本号(前七位就行)】

先使用git reflog查看版本信息,显示

622bb3c (HEAD -> master) HEAD@{0}: commit: second commit    //此时指向的是第二个版本
c5b235a HEAD@{1}: commit (initial): first commit

然后使用git reset --hard c5b235a,此时指向第一个版本,此时会发现目录下文件的内容也变成了第一个版本的内容,用git reflog命令显示如下

c5b235a (HEAD -> master) HEAD@{0}: reset: moving to c5b235a
622bb3c HEAD@{1}: commit: second commit
c5b235a (HEAD -> master) HEAD@{2}: commit (initial): first commit    //此时指向的是第一个版本

能从第二个版本切到第一个版本,同时也可以再切回第二个版本,切完以后会改变提交的文件内容

Git分支操作 分支特性 分支创建 分支转换 分支合并 代码合并冲突解决

什么是分支

在版本控制过程中,同时推进多个任务,可以为每个任务创建单独的分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行,(情景:可以想象成副本,主分支的已经上线使用,然后需要加入新的功能的时候,把主分支的内容拷贝下来,作为一个分支,新的内容在这个分支上开发完以后,再将新分支合并到主分支)

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

    命令 git branch -v 可以查看分支,结果如下

    master c5b235a first commit
    
  • 创建分支

    命令git branch 【分支名】可以创建分支,git branch hot-fixgit branch -v结果如下

      hot-fix c5b235a first commit
    * master  c5b235a first commit
    
  • 切换分支

    git后面还是master,说明当前还是master分支

    使用git checkout 【分支名】 可以切换分支 先 git checkout hot-fix 然后git branch -v,可以看到切换到了 hot-fix 分支

    * hot-fix c5b235a first commit
      master  c5b235a first commit
    
  • 修改分支

    切换完分支以后,就可以修改工作区的内容(.git文件所在目录下)

    修改完以后,需要git add 【文件名】 git commit -m "【版本信息】" 【文件名】

    我这边是 git add hello.txt git commit -m "hot-fix first commit" hello.txt

    然后git reflog, 可以看到指向了hot-fix分支

    a6f5eea (HEAD -> hot-fix) HEAD@{0}: commit: hot-fix first commit
    c5b235a (master) HEAD@{1}: checkout: moving from master to hot-fix
    c5b235a (master) HEAD@{2}: reset: moving to c5b235a
    622bb3c HEAD@{3}: commit: second commit
    c5b235a (master) HEAD@{4}: commit (initial): first commit
    
  • 合并分支

    想把hot-fix 合并到master分支,需要先切换到master分支,然后再master分支下执行命令git merge hot-fix,就可以把hot-fix 合并到master分支下

    我这边是git checkout master 切换完以后发现.git目录所在目录的hello.txt文件内容又变成了之前master的内容,然后git merge hot-fix,此时发现分支合并了,hello.txt文件的内容变成了hot-fix的内容

  • 产生冲突

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

    先修改master分支文件的内容

    git add hello.txtgit commit -m "master test" hello.txt

    再修改hot-fix分支文件的内容

    git checkout hot-fixgit add hello.txtgit commit -m "master test" hello.txt

    此时执行 git checkout master切换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.
    

    此时执行命令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")
    
  • 解决冲突

    出现冲突合并失败后,打开hello.txt文件,会再文件中标记出来,手动将文件中的内容合并,然后删除下面的合并提示```<<<<<<< HEAD``及其后面的内容都是合并提示,修改完以后保存,然后添加到暂存区,提交到本地库,(master|MERGING)状态下,提交时不用写文件名,实现手动合并

    git add hello.txt 添加到暂存区 git commit -m "merge test"

    然后就手动合并成功了

Git团队协作机制

团队内协作

团队中甲本地库写好了基础代码以后,用push命令推送 到远程库

团队中乙拥有甲授予的权限,乙从远程库clone代码下来进行拓展修改,完成后push到远程库

甲再从远程库中用pull命令拉取远程库中修改过的代码,这样就实现了团队代码的同步

跨团队协作

A团队中的代码遇到解决不了的问题,请求B团队帮忙

B团队的

人通过fork命令作为分支,将A团队的远程库代码复制过来,作为自己的远程库

B团队从自己的远程库clone下来,然后再自己本地库进行修改,完成后push到自己的远程库

B团队完成后,需要pull request向A团队发送一个请求,然后A团队审核

A团队审核后,使用merge将代码合并过来,然后用拉取到本地库,实现跨团队协作

GitHub

GitHub官网https://github.com

创建远程库
  • 1.登录GitHub后,点击网页右上角的+号,选择 new Repository(新建存储库)

  • 2.远程库的名字和本地库的名字最好相同,(本地库的名字指.git文件夹所在的文件夹名)

    输入好远程库名称后,会自动检测是否可用

  • 3.公有库私有库的选项,因为是测试,默认用公有库就行

  • 4.直接点最下方的Create repository,就创建好了一个远程库

  • 5.此时会弹出一个页面,可以选择远程库的链接,有两种不同协议的链接 HTTPS 和 SSH

    我们先用HTTPS的链接,可以直接点后面的按钮复制链接

    https://github.com/zqq2017123491/git-demo.git

    • 查看远程库链接别名的命令git remote -v,此时是没有别名的

    • 创建远程库链接别名的命令

      git remote add git-demo https://github.com/zqq2017123491/git-demo.git

      此时查看别名,结果如下:(出现两个别名,说明这个别名既可以拉取,也可以推送)

      git-demo       https://github.com/zqq2017123491/git-demo.git (fetch)
      git-demo       https://github.com/zqq2017123491/git-demo.git (push)
      
代码推送 Push

​ 基本语法git push 别名 分支

​ 比如我把master分支推送,那就git push git-demo master

​ 执行后会弹窗让我们登录,可以用浏览器的账号登录,登录后会提示我们认证

​ 绑定后会提示Authentication Succeeded,认证成功,Git Bash会显示如下

Enumerating objects: 24, done.
Counting objects: 100% (24/24), done.
Delta compression using up to 8 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (24/24), 1.84 KiB | 471.00 KiB/s, done.
Total 24 (delta 7), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (7/7), done.
To https://github.com/zqq2017123491/git-demo.git
 * [new branch]      master -> master

​ 然后就可以在github的库里看到自己推送的文件了

代码拉取 Pull

在github上可以直接点文件右上角的🖊修改文件内容, 改完以后需要在下方的commitchanges里面输入版本信息然后提交,这样就可以开始pull的尝试了

代码拉取的命令 git pull 链接别名 分支 ,我这里是git pull git-demo master,结果如下,此时打开.git所在目录的文件就能看到改完后的内容了,说明拉取成功

remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 671 bytes | 5.00 KiB/s, done.
From https://github.com/zqq2017123491/git-demo
 * branch            master     -> FETCH_HEAD
   26143e9..0e77469  master     -> git-demo/master
error: could not spawn fsmonitor--daemon in the background
Updating 26143e9..0e77469
error: could not spawn fsmonitor--daemon in the background
Fast-forward
 hello.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
代码克隆 Clone

项目搭建好后,同一个团队的其他人可以通过Clone来获取代码,在尝试Clone之前先删除windows凭据管理器下github的账号信息,Clone代码是不需要登录账号的,Clone需要先知道远程库的链接

  • 在windows开始菜单搜索框搜索 “凭据管理器”,然后删除github的登录凭据

  • 新建一个文件夹,在里面右击打开Git Bush

  • 执行命令git clone 【远程库链接】

    git clone https://github.com/zqq2017123491/git-demo.git

    结果如下

    Cloning into 'git-demo'...
    remote: Enumerating objects: 27, done.
    remote: Counting objects: 100% (27/27), done.
    remote: Compressing objects: 100% (11/11), done.
    remote: Total 27 (delta 8), reused 23 (delta 7), pack-reused 0
    Receiving objects: 100% (27/27), done.
    Resolving deltas: 100% (8/8), done.
    

    此时会发现刚才创建的目录下多了一个文件夹,打开后就是.git所在的目录

    使用git remote -v可以查看链接别名

    结果如下

    origin  https://github.com/zqq2017123491/git-demo.git (fetch)
    origin  https://github.com/zqq2017123491/git-demo.git (push)
    
团队内协作
  • 创建远程库的人邀请团队成员

    • 在GitHub打开远程库,然后点击右上方的设置菜单

    • 选择左侧的Manage access

    • 点击Invite a collaborator

    • 输入团队人的用户名或者邮箱,会自动弹出用户,选中就可以了

    • 然后再最底下点击Pending Invite邀请用户,就可以获取一个邀请链接

      https://github.com/zqq2017123491/git-demo/invitations

  • 团队成员接受邀请,推送修改的内容

    • 登录团队成员的账号

    • 然后在浏览器中打开邀请链接

    • 点击Accept invitation 接受邀请

    • 然后就可以在修改文件内容后,登录团队成员的账号 进行推送了

      执行git add hello.txt

      执行git commit -m "other test push" hello.txt

      执行git push origin master

      同样需要登录认证

      结果如下:(然后团队内的成员就都能在github中看到内容了)

      Enumerating objects: 5, done.
      Counting objects: 100% (5/5), done.
      Delta compression using up to 8 threads
      Compressing objects: 100% (2/2), done.
      Writing objects: 100% (3/3), 290 bytes | 290.00 KiB/s, done.
      Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
      remote: Resolving deltas: 100% (1/1), completed with 1 local object.
      To https://github.com/zqq2017123491/git-demo.git
         0e77469..90b33e0  master -> master
      
  • 创建远程库的人拉取修改后的文件

    • 先将凭据管理器中成员的github账号删除

    • 在github上登录创建远程库的账号

    • 打开之前的文件夹

    • 右击打开Git Bash

    • 执行 git pull 【链接】 【分支】 我这边是 git pull git-demo master,执行结果:

      remote: Enumerating objects: 5, done.
      remote: Counting objects: 100% (5/5), done.
      remote: Compressing objects: 100% (1/1), done.
      remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
      Unpacking objects: 100% (3/3), 270 bytes | 1024 bytes/s, done.
      From https://github.com/zqq2017123491/git-demo
       * branch            master     -> FETCH_HEAD
         0e77469..90b33e0  master     -> git-demo/master
      error: could not spawn fsmonitor--daemon in the background
      Updating 0e77469..90b33e0
      error: could not spawn fsmonitor--daemon in the background
      Fast-forward
       hello.txt | 1 +
       1 file changed, 1 insertion(+)
      
    • 然后就能使创建远程库的那个工作区和远程库的同步了

跨团队协作

想要和其他团队合作,登录账号后,打开其他人团队的远程库连接地址,或者通过搜索的方式找到远程库,然后点击右上方头像下面的Fork,就可以在自己账号上创建一个同样的远程库,可以clone下来修改,也可以直接在GitHub里面改,完成后选择上方的Pull requests菜单,点击Create pull request按钮,可以输入标题和评论,就完成了请求,然后点Create pull request,等待对方团队审核

对方团队登录后,也要点击Pull requests菜单,查看修改的内容,进行审核,审核通过以后,点击上面的conversation菜单,点Merge pull request按钮然后点Confirm merge,合并到自己的项目中,就合并完成

SSH免密登录

远程仓库的Code下拉框里,还有一个SSH连接

  • 先打开自己电脑C盘 "用户"文件夹,在"用户"文件夹下,找到自己电脑用户的文件夹打开

  • 如果里面有.ssh,先删除

  • 然后右击 Git Bash Here

  • 输入命令 ssh-keygen -t rsa -C 【描述内容】 ,输入完成后,按几下回车

    ssh-keygen 是生成免密登录协议
    -t         指定用哪种加密算法来生成,这边的rsa是一种非对称加密算法
    -C 		   描述,自己定,可以用来描述这个免密登录协议是给哪个账号的
    

    敲完结果如下

    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/99152/.ssh/id_rsa):
    Created directory '/c/Users/99152/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /c/Users/99152/.ssh/id_rsa
    Your public key has been saved in /c/Users/99152/.ssh/id_rsa.pub
    The key fingerprint is:
    SHA256:qDF2Aiqfrrw+VW2xFvJRBedxCgeIFUm3C+vAZzqHkoM coderZqq
    The key's randomart image is:
    +---[RSA 3072]----+
    |      ++=*+= .   |
    |     o *. * +    |
    |  .   +.=. o     |
    | . ... Bo .      |
    |o   *o=+S.       |
    |...+.*B          |
    | E++.+ o         |
    |.o  o o          |
    |o=+              |
    +----[SHA256]-----+
    
  • 此时发现目录下生成了一个.ssh文件夹,里面有一个私钥和一个公钥,复制公钥(id_rsa.pub)里面的内容

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBdkPYGxBXWLc1zlvy+d2CKB6CHJJgVeN3txMwEYB2gAKb9glPcee40CCO7oYX0ih/aeJ8Akek1Bh+rkHku7JjkAdmFNCG3dtU8NqjnPF1yXcpB8saKP9ixbYEO9MqZUd2GQmTUN8e59orLSLDjXLnV4FqH9X0+g/GIPvEasB8n6LRc8LHcvXn3dTvgMIIaoI6V7CT2fu8Wa8nQod5KHioNxL25rULz72jt90BLVavbMyqvEz21j84DDWrTjxQgK0wYJP+kvLkNZbGH2bJyKopYLKoSh8SJPEZg6EpsyYniAiy1P76IMX/t3CIhEIxLPKXo3ugBN6lnAg9N6lZDP3QqmBM9ezMKB9sQZdh9/oXNUltinTMWXs4O+voqP3tvQsDsMryYxjO/Lsj0zfJBPFsxi9OBqP09KKB1mLNbnUi65eSAZp08W6ziD48hijsX74wmuGPUg3wDomBdKpmwO/EhKazTZkzxsUl+YKhyrNHQM/1bKyzONiwcmwhtiqAhMM = coderZqq
    
  • 登录GitHub,点击头像下拉菜单,选择Settings,然后选择左侧菜单栏中的SSH and GPG keys

    点击New SSHkey,随便起个名字,然后再key里面粘贴公钥

  • 打开本地工作区的目录(.git所在目录),右击打开git-demo

  • 执行命令 git pull 【ssh链接】

    我这边是git pull git@github.com:zqq2017123491/git-demo.git,得到如下结果,输入yes回车

    The authenticity of host 'github.com (13.229.188.59)' can't be established.
    RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])? 
    

    然后能得到如下结果,此时可以发现工作区(.git所在目录)的文件内容已经拉取好了,可以修改其中的内容,然后在push试一下

    修改完内容,然后执行命令git add hello.txt 然后 git commit -m "coderZqq commit" hello.txt 然后git push git@github.com:zqq2017123491/git-demo.git master结果如下,到Github上检查一下,修改成功!

    Enumerating objects: 5, done.
    Counting objects: 100% (5/5), done.
    Delta compression using up to 8 threads
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 291 bytes | 291.00 KiB/s, done.
    Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
    remote: Resolving deltas: 100% (1/1), completed with 1 local object.
    To github.com:zqq2017123491/git-demo.git
       0f0b69a..34de50c  master -> master
    

IDEA 集成 Git

配置Git忽略文件
  • 为什么要忽略他们?

    与项目实际功能无关,不参与服务器上部署运行。把它们忽略掉能屏蔽IDE工具之间的差异

  • 怎么忽略?

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

    • 需要在c盘的用户目录下,找到自己的用户文件夹,在里面创建一个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
      
      hs_err_pid*
      
      .classpath
      .project
      .settings
      target
      .idea
      *.iml
      

      然后打开用户目录下的.gitconfig文件里面进行配置(在后面加入两行内容,路径根据自己的路径来写)

      [core]
      	excludesfile = C:/Users/99152/git.ignore
      

      注意:这里路径用的是"/" 不是"\"

      保存后就配置完成

定位Git程序

打开IDEA,创建一个Maven工程

打开file——Settings ,找到Version Control,找到Git,然后再第一行设置下Git的安装目录

找到Git的安装目录的bin目录下的git.exe,然后点OK,然后点Test,此时会有个弹窗,说明IDEA已经定位到Git程序,然后点OK就行

初始化本地库

点击IDEA上方菜单的VCS——import into Version Control——Create Git Respository

选中的目录就是当前项目的根目录然后点OK,此时右击项目,就能看到Git,并且pom.xml文件变红了,代表文件未被追踪,可以在pom.xml文件右击,选择Git——Add,就能添加到暂存区

此时可以创建一个类,会自动提示是否需要将文件添加到暂存区

写完类以后,可以将这个类添加到暂存库,也可以把整个项目添加到暂存库

点击添加时,会询问是否提交忽略文件,点取消

添加完后,会自动追踪到文件,后面修改文件可以直接点提交

点击提交,在Commit Message里面输入版本信息,就可以提交

提交完成后,可以在IDEA下方的Version Control中,Log里面查看已经提交的版本,选中某一个版本可以查看版本的详细信息

切换版本

提交多个版本后,可以在Log里面查看,然后选中一个版本右击,选择Checkout Reversion,就可以切换到选中的版本

分支
创建分支

法1:右击项目名,选择Git,找到Repository,选择Branches,然后点击New Branches,创建分支

法2:点击IDEA右下角,有个Git:master,同样点击New Branches ,创建分支

创建完以后,右下角就从master变成你的分支名

切换分支,可以通过右下角的Git:分支名,然后选择想要切换的分支,Checkout,进行切换

合并分支

修改完自己创建的分支后,提交到本地库,在下方的Log可以看到黄色的头指针在自己新创的分支上

切换到master分支,然后点击右下角的Git:分支,选择刚才创建的分支,然后选Merge into current,就能合并分支。

合并分支代码冲突

在创建和修改了新分支的内容,同时修改了master分支的内容,就会产生冲突,可以在合并时弹出来的页面进行修改,点击左右两边的箭头合成

IDEA集成GitHub

IDEA登录GitHub

在IDEA的Settings里面找到Version Control 里面的GitHub(没有可以直接在Plugins里面下载),点击里面的Add account,登录GitHub

登录不上可以点击Enter token ,需要先去GitHub申请个Token

GitHub token申请方法

在GitHub官网,点击头像下拉,选择Settings,Developer settings,找到Personal access tokens

Generate new token将口令的权限打满,生成完以后把口令复制下来

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

然后就可以通过个人口令来登录GitHub了

IDEA分享项目到GitHub

IDEA可以直接点击VCS菜单中的import into Version Control ,Share Project On GitHub将项目分享到GitHub,(不需要在GitHub中创建远程库,他会自动创建一个远程库)

IDEA Push推送项目到远程库
  • 直接右击项目,选择Git——Repository——Push,就可以将项目推送到远程库

  • 或者点VCS菜单下的Git——Push,也可以推送

    用HTTPS协议可能push很慢,可以将GitHub远程库的SSH复制下来,然后在Push的时候点击别名,选择Define Remote ,修改别名,将SSH的链接粘贴进去,选中修改好的别名再push会快一些

IDEA Pull拉取远程仓库代码到本地

如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题

也是在Git菜单下,有个Pull,直接点击就可以拉取

同样的可以切换SSH链接来拉取

IDEA clone 克隆代码到本地

重新找一个文件夹,打开IDEA,在IDEA的初始界面有个Get from Version Control,点击后选择Git,输入地址和路径,就能把代码克隆到本地

Gitee码云

码云官网: https://gitee.com

码云创建远程库

登录账号后,点击右上角的"+",就可以创建远程库了,和GitHub类似,码云也是支持SSH免密登录的,配置方法和GitHub一样

IDEA集成Gitee码云

需要在settings的Plugins里面下载一个Gitee

然后就可以在Git里面修改路径,push自己的项目了

码云连接GitHub进行代码的复制和迁移

在码云里面创建仓库的时候,可以直接在最下方找到导入已有仓库,在GitHub里面复制远程库的HTTPS链接,然后在码云里面粘贴,然后直接点击创建按钮,就可以把GitHub的项目复制过来

如果GitHub的项目更新以后,在码云项目名字后面,有个刷新按钮,就可以进行项目同步

GitLab 基于局域网的托管中心

在使用GitLab之前,需要有一台服务器,没有的可以使用VMware虚拟机来搭建

这里用的是CentOS 7作为服务器的操作系统(我没有使用B站教程中的材料)

  • VMware下载链接:

    链接:https://pan.baidu.com/s/1dxE9mYk-39gir8b4vxaBfA
    提取码:1s2r

  • GitLab官网: https://about.gitlab.com

  • CentOS 7 下载链接:

    链接:https://pan.baidu.com/s/1IlTfOHwo_FAA4pbb_ghoSQ
    提取码:1e2e

GitLab服务器的搭建和部署
服务器准备
  • 准备一个CentOS7以上版本服务器,内存4G,磁盘50G

  • 关闭防火墙,配置好主机名和IP,保证服务器可以上网

    • 点击虚拟机上的编辑菜单,选择虚拟网络编辑器

    • 点击弹出框右下角的更改设置,然后选中VMent8,修改子网ip,主要改后面两位(我这边设置的是192.168.8.0)

    • 点NAT设置,修改网关IP,我设置的是192.168.8.2

    • 点击DHCP设置,修改起始ip为192.168.8.128 结束ip为192.168.8.254

    • 然后在windows开始菜单搜索框搜索“网络连接”,

      打开后找到自己的WLAN,右击属性,共享,选择一个家庭网络,选VMWare NetworkAdapter VMnet8然后保存

      然后选中VMWare NetworkAdapter VMnet8,右击属性,双击Internet协议版本4(TCP/IPv4)

      点击使用下面的IP地址,IP地址、子网掩码、网关设置要和vmware里面的设置一致

      我的是:

      ip地址:192.168.8.1
      子网掩码:255.255.255.0
      默认网关:192.168.8.2
      
    • root连接服务器,执行指令 cd /etc/sysconfig/network-scripts/

    • 执行指令 vi ifcfg-ens33 按i进行编辑

    • 在里面修改BOOTPROTO=none(代表静态分配IP)修改 ONBOOT=yes ,在最后面加上IP和网关 DNS1,我的是

    • IPADDR=192.168.8.100 #IP地址
      NETMASK=255.255.255.0#子网掩码
      #这里的ip和前面设置的C:\Windows\System32\drivers\etc\host的ip地址一致实现映射
      GATEWAY=192.168.8.2  #网关  必须和VMware里面的网关相同
      DNS1=8.8.8.8
      
    • 编辑完成 按esc键 然后输入:wq 保存退出

    • 然后执行 service network restart

    • 然后可以ping www.baidu.com 试试看是否能正常联网

    • 然后修改主机名,vi /etc/hostname 改成git-server,然后重启服务器

  • 打开自己电脑的 C:\Windows\System32\drivers\etc\host

    在里面加入映射,如下所示,在最后加上ip和主机名(这里的映射服务器上暂时没配置,因为我这边没配置静态ip,只能先用DHCP协议联网,方便后面GitLab相关文件的下载,我在安装好GitLab后进行了配置)

    # Copyright (c) 1993-2009 Microsoft Corp.
    #
    # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
    #
    # This file contains the mappings of IP addresses to host names. Each
    # entry should be kept on an individual line. The IP address should
    # be placed in the first column followed by the corresponding host name.
    # The IP address and the host name should be separated by at least one
    # space.
    #
    # Additionally, comments (such as these) may be inserted on individual
    # lines or following the machine name denoted by a '#' symbol.
    #
    # For example:
    #
    #      102.54.94.97     rhino.acme.com          # source server
    #       38.25.63.10     x.acme.com              # x client host
    
    # localhost name resolution is handled within DNS itself.
    #	127.0.0.1       localhost
    #	::1             localhost
    127.0.0.1       activate.navicat.com
    192.168.8.100      gitlab-server
    

    在服务器上执行ifconfig命令,没有的话需要在服务器上安装ifconfig

    先执行yum search ifconfig 然后执行 yum install -y net-tools.x86_64,就能安装成功

    成功后执行ifconfig,就可以看到ip地址变成了我们设置的ip地址

在服务器上安装GitLab

​ 由于没有使用视频中提供的资源,所以我是自己在服务器上下载gitlab,安装过程如下

我的这个系统已经有了ssh、postfix和防火墙,所以直接执行下面内容

sudo yum install curl policycoreutils openssh-server openssh-clients
  • 启动ssh服务

    sudo systemctl enable sshd
    sudo systemctl start sshd
    
  • 添加http服务到firewalld(–permanent表示永久生效)

    sudo firewall-cmd --permanent --add-service=http
    
  • 重启防火墙

    sudo systemctl reload firewalld
    
  • 启动postfix

    sudo systemctl start postfix
    systemctl enable postfix.service//设为开机启动
    
  • 新建 /etc/yum.repos.d/gitlab-ce.repo

    命令:

    cd /
    cd etc
    cd yum.repos.d
    vi  gitlab-ce.repo
    

    内容为(配置清华镜像) 按 i键开始编辑

    [gitlab-ce]
    name=Gitlab CE Repository
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
    gpgcheck=0
    enabled=1
    

    然后按esc 输入:wq

    然后执行

    sudo yum makecache
    sudo yum install gitlab-ce
    
    初始化GitLab服务

    执行命令 gitlab-ctl reconfigure初始化GitLab服务

    启动GitLab服务

    执行命令gitlab-ctl start 启动GitLab服务

    如需停止服务,执行命令 gitlab-ctl stop

    使用浏览器访问gitlab-server或者http://192.168.8.100,就可以进入GitLab页面登录,修改密码后登录

    gitlab修改管理员账户密码
    • 先进入到gitlab的bin目录
      cd /opt/gitlab/bin
    • 打开控制台
      gitlab-rails console
    • 获取管理员账户
      user=User.where(id:1).first
    • 修改密码
      user.password="xxx"//这边是设置密码
    • 保存用户
      user.save!
    • 退出
      quit
    • 然后就可以在网页中用刚才修改的密码登录管理员账户了,管理员账户用户名是root
IDEA集成GitLab
  • 可以在IDEA的Settings Plugins搜索gitlab,然后安装GitLab插件

  • 点击File——Settings——Version Control——GitLab,选择Add New GitLab Server

  • 输入GitLab服务器地址 https://gitlab-server/ 选择HTTPS协议,然后点击OK

  • 打开浏览器创建一个GitLab远程库,点击Clone,复制远程库链接,修改链接中的gitlab.example.com为自己的地址,我的是gitlab-server,也可以是192.168.8.100

  • 剩下的Git的的操作就和IDEA集成Gitee一样了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棋小仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值