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

作用: 直接下载文件夹

相关推荐
Smile丶凉轩3 小时前
微服务即时通讯系统的实现(服务端)----(1)
c++·git·微服务·github
pumpkin845145 小时前
GitHub 和 GitLab
gitlab·github
lizz6665 小时前
gitlab:使用脚本批量下载项目,实现全项目检索
gitlab
脸ル粉嘟嘟5 小时前
GitLab使用操作v1.0
学习·gitlab
和你一起去月球13 小时前
TypeScript - 函数(下)
javascript·git·typescript
我不是程序猿儿13 小时前
【GIT】TortoiseGit的变基(Rebase)操作
git
yyycqupt20 小时前
git使用(一)
git
Kkooe1 天前
GitLab|数据迁移
运维·服务器·git
Beekeeper&&P...1 天前
git bash是什么,git是什么,git中的暂存区是什么,git中的本地仓库是什么,git中工作目录指的是什么
开发语言·git·bash