初识Git

Posted unrecognized

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Git相关的知识,希望对你有一定的参考价值。

了解Git是什么以及Git的安装

01、Git是什么

目标

掌握和了解Git是什么,在实际应用中处于什么角色。

目标

在项目开发中,团队协作管理代码和文件是每天必须要做的事情。大家一定会碰到如下几个场景和问题?

1:协同修改,多人并行开发修改服务器的文件

2:数据备份

2:版本管理,权限控制

3:如果文件和工程误删了还能找回来吗?

4:分支管理 1.0 2.0

5:遇到了文件冲突如何解决?

6:如何把一些我临时保存的文件不要提交?

这些问题的解决方案可以使用今天要讲的版本控制工具:Git 能够通通解决掉。

那到底什么是Git呢?

在官方明确定义:Git是一个开源,免费的分布式版本控制系统!

小结

  • svn和git都是做版本控制的,如果不理解一句话:记录代码的轨迹就好比每个人的成长阶段一样。
  • 但是svn它集中式的版本控制,不能离线工作。git分布式的版本控制,它版本放在用户自己的电脑。
  • svn不支持离线工作,版本全部都放在是中央服务器。如果中央服务器挂了。那么版本全部丢失。
  • git支持离线工作。版本都放用户自己电脑上完成。---- 分布式的版本控制

目标:那分布式到底是什么?

Git什么分布式 图解说明如下:
技术图片

02、Git的由来和发展史及特点

目标:学习和掌握git的发展史及特点

概述

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

Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002 年间)。到 2002 年,Linux 系统已经发展了十年了,代码库之大让 Linus 很难继续通过手工方式管理了,于是整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。

到 2005 年的时候,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:

? 速度

? 简单的设计

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

? 完全分布式

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

优点:

适合分布式开发,强调个体;

公共服务器压力和数据量都不会太大;速度快、灵活;

任意两个开发者之间可以很容易的解决冲突;离线工作。

缺点:

代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息;

权限控制不友好;如果需要对开发者限制各种权限的建议使用 SVN。

03、Git和代码托管中心和协作开发得流程

目标:掌握和了解github的基本原理和协同开发的步骤及开发流程。

场景

代码托管中心的任务是:维护远程库。

局域网环境下

  • GitTab服务器

  • 外网环境下

    • GitHub
    • 码云
  • 本地库和远程库

技术图片

Git的常见命令的学习和掌握

04、Git安装-客户端和服务端

目标

现在已经明白Git是一款版本控制工具。和svn一样分为客户端和服务端。

服务端用来创建仓库保存文件的版本信息。客户端用来控制服务端的文件的维护操作。

下载

https://git-scm.com/download

目标

1:安装Git服务端

这是 windows 版本的 git 服务器;所以必须安装;

2:安装Git的客户端工具 ---- TortoiseGit

这是 windows 下对 git 操作的一个图形界面管理工具,安装后可以方便地使用图形界面去操作 git;

3:安装中文语言包

这是 windows 下对 git 操作的一个图形界面管理工具的一个中文语言包,安装后TortoiseGit 的菜单就变成中文的了

05、Git文件操作系列-创建版本库

目标:Git是如何来创建本地仓库的呢?

图解

技术图片

创建本地仓库的两种方式

1:命令式

git init

git init --bare

2:版本库核心文件的解释

目录 描述
config 该文件主要记录针对该项目的一些配置信息,例如是否以bare方式初始化、remote的信息等,通过git remote add命令增加的远程分支的信息就保存在这里;
objects Git中的文件和一些操作都会以git对象来保存,git对象分为BLOB、tree和commit三种类型,例如git commit便是git中的commit对象,而各个版本之间是通过版本树来组织的,比如当前的HEAD会指向某个commit对象,而该commit对象又会指向几个BLOB对象或者tree对象。
HEAD 该文件指明了git branch(即当前分支)的结果,比如当前分支是master,则该文件就会指向master,但是并不是存储一个master字符串,而是分支在refs中的表示,例如ref: refs/heads/master
index 该文件保存了暂存区域的信息。该文件某种程度就是缓冲区(staging area),内容包括它指向的文件的时间戳、文件名、sha1值等;
Refs 该文件夹存储指向数据(分支)的提交对象的指针。

小结

仓库是通过 git init 来初始化。版本控制是放在.git目录下。

06、Git文件操作系列-创建版本库设置签名

目标 :设置和配置用户名和密码,

步骤:

  • 作用是:区分不同开发人员的不同身份

  • 辨析:这里设置的签么和远程登陆库的(代码托管中心)的账号和密码没有任何关系。

  • 设置的命令是:

    • 项目级别:仅在当前本地库范围有效。

      git config user.name username
      git config user.email username@email.com
    • 系统用户级别:登录当前操作系统的用户都有效。

      • 就近原则:项目级别的优先于系统级别的用户。二者都有时采用项目级别的签名。
      • 如果只有系统级别的签名,就以系统级别的签名为准。
      • 如果两者都没有是不允许,会报错。
      git config --global user.name username123
      git config --global user.email username@email.com
  • 全局的用户信息放在:系统盘的--用户目录--用户名目录--.gitconfig文件中

    命令:

    cat .git/config----查看局部的

    内容如下:

    [user]
      name = username
      email = username@email.com
    

小结

1:git config是配置用户的签名信息,目的为来:做身份的识别和隔离。两种方式全局和局部

2:全部配置的信息最终会写入到c://用户目录下/.gitconfig文件,局部就写入到当前本地仓库的.git目录下config中,如果两个配置,局部要优先于全局。

07、Git文件操作系列-查看状态,历史日记信息

目标

添加的文件如何查看历史记录,状态以及提交版本信息呢?

图解
技术图片

查状态:

> git status

查看日志

> git log  整体展示,不直观,如果要翻页,一直按enter键进行翻页,按CTRL+C退出
> git log --pretty=oneline 美化显示

技术图片

> git log --oneline -- 美化的缩小版

技术图片

> git reflog 查看详细的日志和回退步骤

08、Git文件操作系列-添加,修改,删除文件到暂存区和版本区

目标

Git是如何在仓库中添加文件,代码或者工程的呢?

图解:

技术图片

缩略图:

技术图片

方式有两种
技术图片

额外扩展:

查看文件的状态信息:

> git status

1:添加文件到暂存区

> git add 文件
> git add . --- 提交所有文件到暂存区
> git rm --cached good.txt 重缓存区中拉回到工作区

2:添加文件到版本区

> git commit -m '注释一定写'

小结

1: git status 红色---初态,还任何操作, 绿色----到暂存区

2:如果没有任何信息代表以及形成版本了。

注意:git commit 后面的-m代表注释的意思。如果不加,git会强迫你去加.

3: 删除的文件还能找回吗?能!

答案:是可以的,但是有一个前提你是文件必须提交过形成过版本。

09、Git文件操作系列-文件得撤销和找回

目标:使用git命令git reset 找回文件回退到历史版本

命令:

添加的文件如何找回:从版本取---工作区(==推荐做法==)

git reset --hard 版本号(缩写七位)

如何从暂存区把删除的文件拉回到工作区

git reset --hard HEAD
git reset --reflog  找到版本以前版本信息

git reset --hard [索引值(缩写七位)] 往前往后都可以

git reset --hard 12sd23

使用^符号:只能后退,后退多少就 写多少个 ^

git reset --hard HEAD^
git reset --hard HEAD^^^

使用~符号: 只能后退 后退多少就 写多少个 ~具体的步数

git reset --hard HEAD~1
git reset --hard HEAD~3

10、Git-文件 操作系列-文件差异比较命令(了解)

目标:使用git命令git diff 查看版本之间得对比和比较

命令:

是将工作区的文件和暂存区进行比较

> git diff bbb.txt 
拿仓库中这个文件最新的版和工作区文件进行对比.

是将工作区和本地历史版本的比较:git diff [本地库中历史版本][文件名]

> git diff HEAD bbb.txt
> git diff 8ec2942 bbb.txt

如果不带文件名,比较的是多个文件

> git diff 
> git diff HEAD

11、Git文件操作系列-忽略不需要提交的文件-.gitignore(重点)

目标

往往在开发的过程中,特别是在多人协作的场景下,可能需要把一些无用的文件不需要提交。GIT是如何来做的的呢?-

图解
技术图片

方式:

创建.gitignore 或者TortoiseGit软件进行添加
技术图片

创建命令

# 1:打开`git bash here` 输入如下命令:
> vim .gitignore
target
*.iml
.idea
#2:保存退出 
:wq

gitignore 语法规则

空行或是以 # 开头的行即注释行,将会被忽略。

可以在前面添加正斜杠 / 忽略当前路径文件,但不包括子目录的同名文件。

可以在后面添加正斜杠 / 来忽略文件夹。

可以使用 ! 来否定忽略,即比如在前面用了 *.apk ,然后使用 !a.apk ,则这个 a.apk 不会被忽略。

* 用来匹配零个或多个字符,如 .[oa] 忽略所有以".o"或".a"结尾, ~ 忽略所有以 ~ 结尾的文件(这种文件通常被许多编辑器标记为临时文件); [] 用来匹配括号内的任一字符,如 [abc] ,也可以在括号内加连接符,如 [0-9] 匹配 0 至

9 的数; ? 用来匹配单个字符。

示例如下:

# 忽略 .a 文件

*.a

*.txt

# 但不忽略 lib.a, 尽管已经在前面忽略了 .a 文件

!lib.a

# 仅在忽略当前目录下的 TODO 文件, 但不包括当前目录的子目录下的 subdir/TODO

/TODO

# 忽略 build/ 文件夹下的所有文件 build/

# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt doc/*.txt

# 忽略所有的 .pdf 文件 在 doc/ directory 下的 doc/**/*.pdf

12、Git文件操作系列-添加Java工程到git本地仓库中

目标

我们已经在前面的课程中已经掌握了git最基本的操作,对文件的上传,更新,删除,回退以及忽略不需要的文件都已经有一定的认识了,那么接下我们建立一个java工程来进行模拟操作具体步骤如下:

目标

建立java工程总结前面学习和掌握的相关的命令和工具使用?

实现过程和步骤如下:

git init
忽略文件 . gitignore
git status
git add .
git status 
git commit -m '注释'
git log
完成

Git的远程仓库和协同开发Gitee&GitHub

关联远程仓库

技术图片

步骤

格式:

git remote rm origin 从当前数据库中删除现有的关联

git remote add origin xxxx的远程仓库地址 https

1:配置账号和密码

> git config --global user.name "username"
> git config --global user.email "username@eamil.com"

2:添加本地仓库和远程仓库关联-https连接

> git remote add origin https://github.com/project/gitdemo.git

如果删除之前关联:
> git remote rm origin
> git remote add origin 改成新的地址

初次关联使用提交代码的时候需要填写,账号和密码信息。

3:添加本地仓库和远程仓库关联-ssh连接(免密)

> git remote add origin git@github.com:project/gitdemo.git

提交到远程仓库的命令是:

git push origin master

git pull origin master

小结

1:git remote 以后地址记录什么地方呢?

14、Github远程仓库-提交文件到远程仓库中 【重点】

目标:

如何同步本地仓库的代码到远程仓库到呢?

图解:

技术图片

步骤:

git push origin master

注:origin 当远程的数据库,master理解为表,真正的含义是:分支。

15、Github远程仓库-克隆远程仓库到本机 【重点】

目标

如何克隆远程仓库到本机呢?

图解

技术图片

步骤

git clone ssh/https

git push origin master

git pull origin master

小结

1:git clone 初次拉取代码。

第一件事:自动创建一个本地仓库

第二件事:自动配置账号和密码到凭据中

第三件事:自动配置和远程仓库管理。

16、Github远程仓库- 更新到本机【重点】

目标:

如何同步远程仓库的代码到本地仓库到呢?

图解
技术图片
步骤:

git pull origin master

==如果出现如下问题==

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://gitee.com/project/project.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

解决方案1:

git push -f origin master

它会把远程仓库中所有的信息全部清空,在把本机仓库版本提交上去,

解决方案2:

git clone https://gitee.com/project/project.git
然后在去放代码和工程。然后在
git add .
git commit -m 'xx'
git push origin master

17、Github远程仓库-SSH-协议免密操作配置和注意事项【重点】

目标

连接远程仓库,势必会进行其用户验证,这个时候需要频繁的输入用户的账号信息,有没有一种能够免密的操作呢?为什么我们连接好以后就不需要配置用户名和密码了呢?因为windows10系统会帮我们记录用户的凭据信息可以在【控制面板】---凭据管理中获得。

技术图片

==但是很遗憾的是:在window7系统中没有这种凭据,https的这种方式可能就会出现一个现象就是频繁的数据用户名和密码,这样就是一件繁琐的操作,如何解决呢?没错使用ssh的方式来进行连接。==

图解

技术图片

具体步骤如下:

第一步:打开命令工具"git bash here" 输入命令 “ssh-keygen -t rsa ” 生成密钥和公钥

ssh-keygen -t rsa
ssh-keygen -t rsa -C xuchengfeifei@163.com

第二步:然后点击【New SSH keys】 按钮,将【C:Usersmengk.ssh】生成的公钥文件【id_rsa.pub】内容复制出来.

第三步:打开github官网--【登录】--【settings】-【SSH-GPG keys】

第四步:测试和体验ssh的免密操作

1:添加远程仓库和本地仓库的关联:(origin 是默认的远程版本库名称)

> git remote add origin git@github.com:username/gitdemo.git

提示:如果你想更换远程仓库的地址:

> git remote rm origin 
  
# 然后在执行
> git remote add origin 你需要更换的远程仓库地址

2:提交代码到远程仓库中:

> git push origin master

4:拉取最新代码到本机

> git pull origin master

小结

==注意:记得将https地址更换ssh地址。==

18、Git远程仓库操作-邀请团队人员加入到团队中协作开发

目标:使用gitee邀请成员加入到开发中

步骤:

准备两个账号或者找伙伴一起完成这个事情。详细步骤如下:

1:点击管理
2:邀请用户
3:使用邮箱或手机邀请用户。
4:被邀请人收到站内信,点击同意
1:点击确认加入
2:点击接受
5:使用邀请账号查看是否邀请为开发者

19、Git远程仓库操作-远程跨团队协作操作演示

目标:操作演示完成跨团队协作和开发。
技术图片

步骤:

模拟:A 用户远程仓库 B用户 邀请好友 ,

==建议操作的时候:用两种浏览器操作,当前一个是:谷歌浏览器 一个是火狐浏览器==

1:A复制复制一个远程仓库地址:https://gitee.com/username/rumo-blog.git 给B好友。
2:B打开地址https://gitee.com/username/rumo-blog.git 进行 fork。
3:好友使用git clone 完成克隆操作,进行工程修改。
4:修改然后提交。
5:然后B好友用户发起:pull request 推送给 A用户。

==请注意标题一定要填写,内容可以不填写。==

6:A用户查看B好友提交的代码,点击查看合并代码到A用户项目中。
7:完毕。

20、Git分支管理,合并分支,切换分支【重点】

目标:

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
文件提交的过程
技术图片

图解:
技术图片

第四步:合并分支

图解:
技术图片
命令的方式:

第一步:创建分支

> git branch dev   创建分支 dev
> git checkout dev  选中当前分支  dev

注:上面两个命令可以组合成一个复合命令
> git checkout -b dev 
git checkout -b dev  =  (git branch dev +  git checkout dev)

第二步:查看分支

> git branch

第三步:添加文件,提交文件在当前分支

> vim e.txt  --- 创建文件,输入任意内容
> git add . ---提交e.txt文件,
> git commit -m 'e.txt' 提交e.txt文件到test分支中

第四步:推送分支到远程仓库中

> git push origin dev

第五步:合并分支

> git checkout master --切换回master分支
> git merge dev --- 将dev下面的内容全部合并到master中

第六步:删除分支

> git branch -d dev 

Git的实战和自定义远程仓库

21、GIT实操系列-IDEA如何操作Git-项目上传和远程关联【重点】

目标: 使用idea提交代码到远程仓库中。

步骤:

场景----上传场景

  1. 创建maven工程
  2. 提交代码到本地仓库
  3. 设计忽略文件.gitgnore在当前项目下
  4. 提交忽略文件到本地仓库
  5. 推送代码到远程仓库中
  6. 拉取远程仓库代码本本地仓库中
  7. 修改远程仓库地址

==为什么maven只需要提交src和pom.xml==

22、GIT实操系列-IDEA如何操作Git-项目克隆和push和pull【重点】

目标: 使用idea下载项目到远程仓库中。

步骤:

场景----克隆场景

  1. 克隆项目到本机
  2. 拉取最新代码进行协作开发
  3. 解决冲突
  4. 查看历史记录
  5. 文件撤销
  6. 创建并选择分支
  7. 添加文件,提交,推送分支到远程仓库
  8. 合并分支到master中

23、GIT实操系列-IDEA如何操作Git-分支的创建和合并【重点】

目标: 使用idea完成分支的创建和合并

步骤:

场景----克隆场景

  1. 克隆项目到本机
  2. 拉取最新代码进行协作开发
  3. 解决冲突
  4. 查看历史记录
  5. 文件撤销
  6. 创建并选择分支
  7. 添加文件,提交,推送分支到远程仓库
  8. 合并分支到master中

24、GIT实操系列-IDEA如何操作Git-文件的冲突和解决方案【重点】

目标: 使用idea模拟完成项目工程文件的冲突和解决解决冲突。

步骤:

场景----克隆场景

  1. 克隆项目到本机
  2. 拉取最新代码进行协作开发
  3. 解决冲突
  4. 查看历史记录
  5. 文件撤销
  6. 创建并选择分支
  7. 添加文件,提交,推送分支到远程仓库
  8. 合并分支到master中

25、GIT实操系列-IDEA如何操作Git-查看历史记录和回退【重点】

目标: 使用idea的git工具查看历史记录和版本信息回退等相关操作。

步骤:

场景----克隆场景

  1. 克隆项目到本机
  2. 拉取最新代码进行协作开发
  3. 解决冲突
  4. 查看历史记录
  5. 文件撤销
  6. 创建并选择分支
  7. 添加文件,提交,推送分支到远程仓库
  8. 合并分支到master中

26、Git自定义私有远程仓库【重点】

目标

GitHub 就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给 GitHub 交保护费,那就只能自己搭建一台 Git 服务器作为私有仓库使用

下载地址

https://mirrors.edge.kernel.org/pub/software/scm/git/

步骤

安装方式一、手动解压的方式

a:安装文件上传和下载的命令

> yum install -y lrzsz

b:下载 Git 依赖组件

> yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettextdevel gcc cc 

c:安装git

1: 切换到/usr/local目录下
> cd /usr/local
2:使用 rz 上传 git 安装源码包
> rz 敲回车--选择当前操作系统的:【git-2.23.0.tar.gz】的文件
> ll 查看上传是否成功

d:解压git-2.9.5.tar.gz,开始安装git

> tar -zvxf git-2.23.0.tar.gz 

e:配置git的安装环境

> cd  git-2.23.0
> ./configure

f:执行编译和安装

> make && make install

g:执行安装成功命令

> git --version
打印结果如下:
git version 2.23.0 说明安装成功

安装方式二、Git第三方仓库安装方式(IUS)

1.安装使用里面说的自动化安装脚本

> curl https://setup.ius.io | sh

2.执行安装,并查看下版本

> yum remove -y git | yum -y install git2u
> git --version
git version 2.16.4

Git 权限用户的分配和管理?

借助linux--目录权限管理。---添加用户和密码。----用户有没有对这个目录的访问-读写权限

私有服务器仓库的建立

1 :创建用户, 账号名字是:username密码是:123456 ,该用户可以:克隆,拉取,推送等操作

# 添加用户 -会在home下面产生一个文件夹
> useradd git

# 设置/home/git 文件夹操作权限
> chown git:git /home/git 
 
# 设置密码;输入两次密码,密码随便,两次一样就可以 
> passwd git 

2:创建仓库

# 切换到 git 用户,创建仓库 
> su git
> git --bare init /home/git/mygit

# 修改配置文件,允许提交到 master 分支 
> vim /home/git/mygit/config 
 
# 添加如下代码:
[receive] 
      denyCurrentBranch = ignore

配置代码的原因:

是当我们初始化一个远程仓库的时候,使用git --bare init即可了,而不是使用git init,这样那么该远程仓库的目录下,也包含work tree,当本地仓库向远程仓库push时,如果远程仓库正在push的分支上时,那么push后的结果不会反映在work tree上,也就是在远程仓库的目录下对应的文件还是之前的内容,必须使用git reset --hard才能看到push之后的内容。

3:创建 gitx 只读用户,账号名是:gitx 密码是:123456 ,只能拉取和克隆最新代码。但是不能进行修改和提交。

# 切回root管理员角色添加 gitx 用户
> su root 

# 添加gitx只读用户 ,只能clone  能上传?
> useradd gitx 

# 设置/home/gitx  文件夹其它用户可以读权限,让 gitx  用户可以读 git 用户的
/home/xiaoerx 文件夹,也就是可以读仓库
> chmod o+rx /home/git

# 设置密码;输入两次密码,密码随便,两次一样就可以;这里密码使用 123456 
> passwd gitx  

4:本机连接自定义的仓库地址

连接地址的格式如下:

# ssh://用户名@IP:22+git 仓库在 linux 中路径。
比如:
git clone ssh://git@xxx.xxx.xxx.xxx:22/home/git/mygit 
git clone ssh://gitx@xxx.xxx.xxx.xxx:22/home/git/mygit 

git clone  ssh://git@xxx.xxx.xxx.xxx:22/home/git/mygit 

GitLab的搭建私服仓库的搭建

目标:使用gitlab搭建私服仓库并托管代码

步骤:

1:首页:https://about.gitlab.com/

2:安装说明:https://about.gitlab.com/installatio

3:安装目录:https://about.gitlab.com/install/

第一种方式:在线安装 GitLab

sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix


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

sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee

实际问题:yum 安装 gitlab-ee(或 ce)时,需要联网下载几百 M 的安装文件,非常耗时,所以应提前把所需 RPM 包下载并安装好。

第二种方式:GitLab手动安装

手动安装:

下载地址为:

浏览器下载:

https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.1.4-ce.0.el7.x86_64.rpm

Linux命令下载:

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.1.4-ce.0.el7.x86_64.rpm/download.rpm

1:调整后的安装过程,注意:==rpm文件放入到opt目录下==

sudo rpm -ivh /opt/gitlab-ce-12.1.4-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 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

2:安装之后,就启动gitlab了。

# 初始化配置 gitlab
gitlab-ctl reconfigure
# 启动 gitlab 服务
gitlab-ctl start
# 停止 gitlab 服务
gitlab-ctl stop

技术图片

==第三种方式安装:Docker版本安装GitLab(推荐)==

目标:使用docker安装gitlab

安装docker

1:卸载旧版本

 yum remove docker                   docker-client                   docker-client-latest                   docker-common                   docker-latest                   docker-latest-logrotate                   docker-logrotate                   docker-engine

2:使用存储库安装安装所需的包。yum-utils提供了yum-config-manager 效用,并device-mapper-persistent-datalvm2由需要 devicemapper存储驱动程序。

yum install -y yum-utils   device-mapper-persistent-data   lvm2

使用以下命令设置稳定存储库。

yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo

3:安装最新版本的Docker Engine - 社区和容器,或者转到下一步安装特定版本:

yum install docker-ce docker-ce-cli containerd.io

启动Docker。

 systemctl start docker

配置镜像仓库地址,加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://0wrdwnn6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

4:拉取gitlab镜像

docker pull gitlab/gitlab-ce

5:创建gitlab容器

docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称

6:配置

netstat -nlpt

按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)。

# gitlab.rb文件内容默认全是注释
$ vim /home/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://192.168.153.142'

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.153.142'
gitlab_rails['gitlab_shell_ssh_port'] = 222
# 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出

修改gitlab.rb文件

# 重启gitlab容器
$ docker restart gitlab

注意,此处将8081仍然映射到了8081端口上。ps,这也是为什么上面不让用8080端口的,因为如果用8080,会造成内部端口冲突。
做好这一切之后,重新访问http://xxx.xxx.xxx.xxx:8081,突然感觉世界平静了好多,这里截一张正常的图,以示庆贺。

启动的时间比较长,耐心等候。如果你想查看日志:

docker logs -f gitlab

技术图片

  • 初次登录时需要为 gitlab 的 root 用户设置密码。
  • 注意关闭防火墙:systemctl stop firewalld / systemctl disable firewalld
    技术图片

后续的步骤就是一模一样的了。
技术图片

Eclispse操作Git

目标:完成eclipse的初始导入

步骤

工程初始化为本地库

工程→右键→Team→Share Project→Git
技术图片

第二步:创建.git仓库

技术图片

第三步:配置用户信息

技术图片

第四:常见的文件图标介绍

技术图片

Eclipse 中忽略Eclipse 特定文件

目标:使用Java.gitignore进行对特定文件的忽略。

这些都是 Eclipse 为了管理我们创建的工程而维护的文件,和开发的代码没有
直接关系。最好不要在 Git 中进行追踪,也就是把它们忽略。
.classpath 文件
.project 文件
.settings 目录下所有文件

为什么要忽略 Eclipse 特定文件呢?
同一个团队中很难保证大家使用相同的 IDE 工具,而 IDE 工具不同时,相关工
程特定文件就有可能不同。如果这些文件加入版本控制,那么开发时很可能需要为
了这些文件解决冲突。

在~/.gitconfig 文件中引入上述文件

[core]
    excludesfile =C:/javaprojects/testgit/Java.gitignore

==[注意:这里路径中一定要使用“/”,不能使用“”]==

技术图片
==注意:一定要重启eclipse。==
技术图片

Eclipse 推送代码到远程仓库

1:配置远程仓库
技术图片
技术图片

2:配置分支到远程仓库中
技术图片
点击下一步完成即可。
点击close关闭即可。

Eclipse-clone克隆工程到eclipse中

目标:从远程仓库中clone项目到eclipse中

步骤:

1:在任意空白面板区域点击右键---->import--->Git---->projects from git
2:选择clone项目
3:选择自动构建一个工程
技术图片

4:开始克隆
1.URL填写远程仓库地址
2.User填写账号密码
3.选择分支,点击下一步
4.选择克隆目录
5.完成

5:项目被克隆下来。
技术图片

完毕.

Eclipse创建分支和合并分支

目标:使用eclipse创建分支和合并分支管理项目和增加新需求。

步骤

1:创建分支,创建以后就自动选中分支
技术图片

2:提交分支,和之前提交master的步骤一致。
技术图片

3:远程仓库查看

技术图片

分支提交和创建完毕。

4:分支的合并
技术图片

合并分支
技术图片

技术图片

点击 ‘merge‘按钮合并。

合并完成。

以上是关于初识Git的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

git初识

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

初识git