git与gitlab

目录

gitlab

下载与安装

重置管理员密码

gitlab命令

git远程gitlab相关命令

认证

补充

git

[git 分布式版本控制](#git 分布式版本控制)

安装

git的四个区域与文件的四个状态

使用git

常用命令


git 分布式管理系统

gitlab 企业私有库

github 公网共享库,全球最大的代码托管网站、开源网站、交流网站

gitlab

下载与安装

地址:

官网 https://about.gitlab.com/downlads

清华镜像 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

安装

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm

yum -y install gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm

修改配置文件(ruby语言编写):

vim /etc/gitlab/gitlab.rb

external_url 'URL'

gitlab-ctl reconfigure 配置生效并启动

gitlab-ctl show-config 验证配置

gitlab-ctl status 查看

可以直接访问URL登录界面

重置管理员密码

gitlab-rails console #进入gitlab控制台

user = User.find_by(username: 'root') # 切换为root用户

user.password='Picc@2222222' #设置密码

user.save! #保存

gitlab命令

gitlab-ctl

status

start

stop

restart

tail nginx 查看日志

git远程gitlab相关命令

remote

-v 显示远程仓库

-add REPONAME URL 添加一个远程库

-remove REPONAME

push [-f] [--set-upstream] [远程仓库的别名] [本地分支名][:远程仓库的分支名]

参考文档:https://www.yiibai.com/git/git_push.html?_t=t

REPONAME

BRANCHNAME:BRANCHNAME #推送分支到远程仓库

--tags #推送分支时一并把tag推送到远程仓库

TAGNAME:推送tag到远程仓库

--delete BRANCHNAME 删除远程仓库分支

示例:

bash 复制代码
git remote add  picc git@192.168.0.13:java/test.git #添加远程仓库
git remote  remove origin  #删除远程仓库
git push origin  master:master --tags  #推送主分支和tag到远程仓库
git push --all picc #推送本地所有分支到远程仓库
git push picc --tags #推送tag
git branch  -r  #查看远程仓库分支

认证

参考文档:https://blog.csdn.net/wuhuiskt/article/details/136325532

生产中往往会开通ldap统一账户管理中心

Linux

通过ssh登录需要生成免密的公钥,导入到gitlab中

http登录可以通过设置好的账号密码

Windos

需要安装一个git客户端其他同Linux

管理员

Deploy Keys :只有下载权限的Keys,主要用于jenkins

备份

vim /etc/gitlab/gitlab.rb

gitlab_rails['backup_path']='/data/backup/gilab' 备份路径

gitlab_rails['backup_keep_time']=604800 备份有效时间,默认为7天

gitlab-ctl reconfigure 生效

gitlab-ctl restart

创建目录并授权git用户

crontab -l 创建计划任务备份全库

0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

恢复

停止数据写入服务:

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

gitlab-rake gitlab:backup:restore BACKUP=1492296095

gitlab-ctl restart

补充

sourcetree 工具

git

git 分布式版本控制

  • 与集中式版本控制svn对比
  1. Git是一个分布式版本控制系统,这意味着每个开发人员的电脑上都有一个完整的本地仓库副本,可以在没有网络连接的情况下进行版本控制操作,如提交、查看历史记录等;而SVN是一个集中式版本控制系统,所有数据都存储在一个中央服务器上,本地只保存一个版本,开发人员需要连接到中央服务器进行版本控制操作。

  2. 存储结构。Git将内容以元数据的形式存储,这种方式使得Git能够更高效地处理大量文件和历史记录。SVN则直接存储文件。

  3. 分支管理。Git在管理分支时更为灵活和高效,可以在同一个工作目录下快速切换不同的分支,而且Git的分支是指向特定提交的指针,创建和切换成本低。SVN的分支是目录的拷贝,创建和切换成本较高。

  4. 版本管理。Git使用SHA1算法为每个版本生成唯一的标识,这有助于追溯和验证历史记录的完整性。SVN有明确的版本号。

  5. 克隆目录速度。Git通常比SVN更快地进行克隆操作,尤其是在处理大量文件和历史记录时。

6.易用性。SVN通常被认为更容易上手,适合新手使用。Git由于命令较多,被认为是较难学习的,但一旦掌握,可以执行更复杂的操作。

  1. 内容完整性。Git使用哈希算法存储文件,确保了内容的完整性,减少了在遇到故障和网络问题时对版本库的损坏风险。

安装

官网下载地址:https://git-scm.com/downloads

  • windows安装

百度云盘下载:https://pan.baidu.com/s/1KiBxlnhwswPRPRY_B_Esww

提取码:xbun

  • Linux安装

方法一:yum安装版本比较老

yum -y install git

方法二:编译安装较新版本

(1)安装依赖

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

(2)下载解压

wget https://github.com/git/git/archive/v2.7.4.zip

unzip v2.7.4.zip

cd git-2.7.4

(3)编译安装

make prefix=/usr/local/git all

make prefix=/usr/local/git install

rm -rf /usr/bin/git

ln -s /usr/local/git/bin/git /usr/bin/git

git --version

  • 配置用户名和邮箱:

git config --global user.name 'NAME'

git config --global user.email 'MAIL'

git config --global --list 查看

git的四个区域与文件的四个状态

  • 四个区域:

远程仓库:git push 到远程仓库的文件

本地仓库:已生成版本的文件,git status不显示文件,可以用git log查看版本信息

暂存区域:存档add的文件,git status显示为绿色

工作目录:存放新文件和已修改的文件,git status显示为红色

  • 文件的四个状态:

untracked 未纳入版本控制的状态

unmodified 纳入本地仓库中(commit)

modified 修改unmodified状态的文件,状态会变成modified的文件状态,并且从本地仓库回到工作目录中

staged 纳入版本管理的文件(add);暂存区中

使用git

(1)进入,进入想要版本控制的代码所在目录

(2)提名,进行初始化操作(初始化命令:git init)。初始化后,会在当前目录自动创建 .git 文件夹,该文件是Git中最重要的文件夹,因为Git相关文件以及版本都将保存在该文件夹中,通过Git命令可以将所有版本保存在 .git 文件中,两条命令创建一个版本:

(3)管理,使用git status命令查看当前目录下文件状态

git add FILENAME 添加指定文件到暂存区,FILENAME可以用.表示当前所有文件,这时颜色会变为绿色。

(4)生成版本。命令:git commit [-m]

(5)版本迭代

修改index.txt内容然后提交代码生成新的版本

常用命令

git

--version

init 初始化,并加入版本控制

add 纳入版本管理(添加到暂存区)

fetch 拉取

commit

-m #注释

bash 复制代码
#示例
git commit -m 'v1'

status 检测当前文件夹下面的文件状态

-s 状态概览

diff #不加参数比较本地工作区和暂存区的diff信息

git diff commit1 commit2 或 git diff branch1 branch2 :版本库中不同commit(也可以使用HEAD表示)、分支的diff信息(使用git commit 将暂存区修改提交到了版本库)

--cached #比较版本库中不同commit、分支的diff信息(使用git commit 将暂存区修改提交到了版本库)

log

--author='' 过滤名字

--pretty=oneline FILE 可查看文件的提交的id和改动注释

-p FILE 查看文件具体修改的内容

--oneline 查看简写日志

--graph 查看版本路线

rm 从版本库中移除

--cached FILENAME 从暂存区中移除,并移出版本控制

mv

show ID 查看提交的详情,不加ID默认为最新版本信息

checkout (切换指针,可以来回切换,与reset只能回滚不同)

参考文档:https://www.cnblogs.com/gaoBlog/p/10955352.html

ID -- FILE 指定文件复位到ID的版本

-- FILE 工作目录改动后可还原到未改动时的状态

BRANCHNAME 切换分支

-b BRANCHNAME 创建并切换分支

reset 回滚,参考文档:https://blog.csdn.net/qq_39852676/article/details/129094985

--soft ID 回滚版本库到指定ID,工作目录和暂存区不动

--mixed ID (默认)回滚版本库到指定ID,缓存区被清空

--hard ID 回滚版本库到指定ID,暂存区和工作目录复位到ID的版本

省略ID写法(需大写HEAD):

HEAD FILENAME 取消add(追踪)操作,也就是取消暂存区操作,文件绿色变为红色

HEAD^ 复位到上一个版本(一个^表示复位一个版本,同理^^表示复位上两个版本)

HEAD~2 等同于 HEAD^^

例:

git reset HEAD home/home.html

git reset HEAD^^ home/home.html

git reset HEAD~2 home/home.html

reflog 查看包括reset完成时之前的记录和ID,然后可以再回滚回去

pull 直接拉取最新版本的代码并直接与本地合并

fetch 拉取最新代码,需手动与本地代码合并

tag 查看标签(相当于做一次快照)

-a 手动编写标签信息,默认加在最新一次的commit上

-m 编写备注信息

ID 标签创建在此ID上

-d TAGNAME 删除标签

分支功能:只保存修改的文件,没有修改的会用指针指向源文件。可以节省空间并且创建版本更快

branch 查看分支

BRANCHNAME 创建分支

-d BRANCHNAME 删除分支

-D BRANCHNAME 强制删除

-v

--merge 查看已合并的分支

--no-merge 查看未合并的分支

merge(master上执行)合并代码并提交

BRANCHNAME

--abort 忽略其他代码,保留原分支代码(代码冲突;也可以手动修改)

rebase 合并代码

注释:区别于merge,rebase始把多条分支的提交记录合并成一个,并且日志查不到合并日志,merge是能查到包括合并在内的所有提交记录,但是非主分支上的提交记录并没有合并到主分支上,查看日志的时候是在非主分支上提取的

clong URL BRANCH 远程克隆分支

reflog 查看包括reset完成时之前的记录和ID,然后可以通过checkout ID 切换指针,其他不变,可以新建分支合并还原

补充:

安装谷歌访问助手

octotree插件

作用:可以树状显示仓库

enhanced github

作用:可查看单个文件的大小,并可以下载单个文件

gitzip for github

作用: 直接下载文件夹

相关推荐
咚咚?30 分钟前
基于gitlab 构建CICD发布到K8S 平台
容器·kubernetes·gitlab
Franklin7 小时前
VS 版本更新git安全保护问题的解决
git
我是一只代码狗11 小时前
idea中合并git分支
git
我是一只代码狗11 小时前
idea中使用git
git·gitee·github
恋喵大鲤鱼11 小时前
git restore
git·git restore
李少兄12 小时前
Git Commit Message写错后如何修改?已Push的提交如何安全修复?
git·安全
Fireworkitte12 小时前
git stash
git
pe7er1 天前
git submodule简易指南
git
xiaocainiao8811 天前
Python 实战:构建 Git 自动化助手
git·python·自动化