初识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提交代码到远程仓库中。
步骤:
场景----上传场景
- 创建maven工程
- 提交代码到本地仓库
- 设计忽略文件.gitgnore在当前项目下
- 提交忽略文件到本地仓库
- 推送代码到远程仓库中
- 拉取远程仓库代码本本地仓库中
- 修改远程仓库地址
==为什么maven只需要提交src和pom.xml==
22、GIT实操系列-IDEA如何操作Git-项目克隆和push和pull【重点】
目标: 使用idea下载项目到远程仓库中。
步骤:
场景----克隆场景
- 克隆项目到本机
- 拉取最新代码进行协作开发
- 解决冲突
- 查看历史记录
- 文件撤销
- 创建并选择分支
- 添加文件,提交,推送分支到远程仓库
- 合并分支到master中
23、GIT实操系列-IDEA如何操作Git-分支的创建和合并【重点】
目标: 使用idea完成分支的创建和合并
步骤:
场景----克隆场景
- 克隆项目到本机
- 拉取最新代码进行协作开发
- 解决冲突
- 查看历史记录
- 文件撤销
- 创建并选择分支
- 添加文件,提交,推送分支到远程仓库
- 合并分支到master中
24、GIT实操系列-IDEA如何操作Git-文件的冲突和解决方案【重点】
目标: 使用idea模拟完成项目工程文件的冲突和解决解决冲突。
步骤:
场景----克隆场景
- 克隆项目到本机
- 拉取最新代码进行协作开发
- 解决冲突
- 查看历史记录
- 文件撤销
- 创建并选择分支
- 添加文件,提交,推送分支到远程仓库
- 合并分支到master中
25、GIT实操系列-IDEA如何操作Git-查看历史记录和回退【重点】
目标: 使用idea的git工具查看历史记录和版本信息回退等相关操作。
步骤:
场景----克隆场景
- 克隆项目到本机
- 拉取最新代码进行协作开发
- 解决冲突
- 查看历史记录
- 文件撤销
- 创建并选择分支
- 添加文件,提交,推送分支到远程仓库
- 合并分支到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-data
和lvm2
由需要 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注入(代码片段
VSCode自定义代码片段15——git命令操作一个完整流程