bash
服务 | ip /主机名 | 功能 |
---|---|---|
gitlab | gitlab 10.0.0.203 | master分支 |
jenkins | jenkins01 10.0.0201 | dev1分支 |
项目用户组关联
创建test组
创建dev1用户
把dev1用户关联到test组
创建docker项目,把test组添加到项目里
仓库使用命令
-
全局配置
git config --global user.name "dev1"
git config --global user.email "314108534.com"
-
Create a new repository#创建新的空仓库
git clone git@gitlab.john5.com:test/docker.git
cd docker
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
-
Push an existing folder #以存在的文件夹执行以下操作
cd existing_folder
git init
git remote add origin git@gitlab.john5.com:test/docker.git
#添加1个远程仓库
git add .
git commit -m "Initial commit"
git push -u origin master
-
Push an existing Git repository
存在的仓库
cd existing_repo
#重命名
git remote rename origin old-origin
git remote add origin git@gitlab.john5.com:test/docker.git
git push -u origin --all
git push -u origin --tags
master分支操作,
从github拉代码
复制[root@gitlab ~]的公钥到github把代码拉到本地 打通 ssh连接
[root@gitlab ~]#git clone git@github.com:john20105/docker.git
Cloning into 'docker'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 12 (delta 0), reused 2 (delta 0), pack-reused 9
Receiving objects: 100% (12/12), done.
Resolving deltas: 100% (1/1), done.
查看名字是origin是github上的仓库名
此时相当与本地有仓库了
[root@gitlab docker]#git remote
origin
[root@gitlab docker]#git remote -v
origin git@github.com:john20105/docker.git (fetch)
origin git@github.com:john20105/docker.git (push)
从github拉代码到本地复制这个地址
复制这个地址
给从github下来的仓库添添加了个名字叫 gitlab
[root@gitlab docker]#git remote add gitlab git@gitlab.john5.com:test/docker.git
现在这个仓库有2个名字,如下
[root@gitlab docker]#git remote -v
gitlab git@gitlab.john5.com:test/docker.git (fetch)
gitlab git@gitlab.john5.com:test/docker.git (push)
origin git@github.com:john20105/docker.git (fetch)
origin git@github.com:john20105/docker.git (push)
[root@gitlab docker]#git remote
gitlab
origin
推送到gitlab
[root@gitlab docker]#git push -u gitlab master
Counting objects: 12, done.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (12/12), 2.14 KiB | 0 bytes/s, done.
Total 12 (delta 1), reused 12 (delta 1)
To git@gitlab.john5.com:test/docker.git
* [new branch] master -> master
Branch master set up to track remote branch master from gitlab.
master分支查看有了数据
把gitlab上面的参考复制到jenkins01机器
打通ssh连接
[root@jenkins01 ~]#ssh-keygen -t rsa -f ~/.ssh/dev1_rsa -C "dev1"
[root@jenkins01 .ssh]#cat dev1_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85IY+jAsl0mzjq7ltq69R8gshx3UGCLhdZhabYs1Vb5rNoQpDC2GSfjKFqArj9tK1TcX50Cz7fmv+uh9n8bExM1lL6czEKgVwn5amIHc3Rdewu0JMA529AkMwc1wLbNwa8nS7
TO1bzn3uZnCtFSq2Ktm5q1hdfvfus0uAMXq0666oDJmDlqccCsanD9BrGyX6Hup9gXjFCCngSbIGJNk3kzSEcED9toXx474d9zjIa3gRuML2Qs+mxe8exWSas9k3PoWJPg/F2/LzWxydrSD+wDYdlqtlHao+LKs6dbeo7S1W8rqduEej8ZE1GmKoMYc/N0dMuEV0dZiqaOPtezh3 dev1
复制公钥到gitlab dev1用户下
拉代码到dev1用户
git clone git@gitlab.john5.com:test/docker.git
[root@jenkins01 ~]#git clone git@gitlab.john5.com:test/docker.git
Cloning into 'docker'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 12 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (12/12), done.
Resolving deltas: 100% (2/2), done.
查看只有分支master
-
[root@jenkins01 docker]#git branch * master
模拟创建dev1分支,在dev1分支做修改,提交到dev1分支
[root@jenkins01 docker]#git branch dev1
[root@jenkins01 docker]#git checkout dev1
Switched to branch 'dev1'
增加文件并提交
[root@jenkins01 docker]#touch dev1file
[root@jenkins01 docker]#git add .
[root@jenkins01 docker]#git commit -m "dev1 add file"
[dev1 b8bf2f3] dev1 add file
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dev1file
推送到dev1分支成功
git push -u origin dev1
[root@jenkins01 docker]#git push -u origin dev1
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 257 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote:
remote: To create a merge request for dev1, visit:
remote: http://gitlab.john5.com/test/docker/merge_requests/new?merge_request%5Bsource_branch%5D=dev1
remote:
To git@gitlab.john5.com:test/docker.git
* [new branch] dev1 -> dev1
Branch dev1 set up to track remote branch dev1 from origin.
docker项目web页面查看 多了dev1分支
dev1用户登录,查看多了2个文件
切换到master分支进行合并,这2不没用
由jenkins01机器的公钥绑定在 dev用户,dev用户没有权限往master推代码 所以推送失败
[root@jenkins01 docker]#git checkout master
Switched to branch 'master'
[root@jenkins01 docker]#git merge dev1
Updating 0af591c..b8bf2f3
Fast-forward
dev1file | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dev1file
[root@jenkins01 docker]#git push -u origin master
Total 0 (delta 0), reused 0 (delta 0)
remote: GitLab: You are not allowed to push code to protected branches on this project.
To git@gitlab.john5.com:test/docker.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@gitlab.john5.com:test/docker.git'
切换到绑定gitlab服务root用户,合并 此时mster分支数据过于老,需要fetch
[root@gitlab docker]#git fetch
创建dev1分支 gitlab上的代码pull下来
[root@gitlab docker]#git checkout dev1
[root@gitlab docker]#git pull origin dev1
切换到master分支
[root@gitlab docker]#git checkout master
Switched to branch 'master'
合并dev1分支
[root@gitlab docker]#git merge dev1
Updating 0af591c..c68dbff
Fast-forward
dev1fiel | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dev1fiel
推送到master
[root@gitlab docker]#git push -u oirgin master
Total 0 (delta 0), reused 0 (delta 0)
To git@gitlab.john5.com:test/docker.git
0af591c..c68dbff master -> master
Branch master set up to track remote branch master from oirgin.
查看数据合并到了master分支
[root@gitlab docker]#ll
total 16
-rw-r--r-- 1 root root 0 Apr 17 20:22 dev1file
-rw-r--r-- 1 root root 422 Apr 17 20:13 dockerfile
-rw-r--r-- 1 root root 34 Apr 17 20:13 init.sh
-rw-r--r-- 1 root root 356 Apr 17 20:13 nginx.repo
-rw-r--r-- 1 root root 103 Apr 17 20:13 tc1.conf
web界面点击合并
tag
创建tag示例
[root@gitlab docker]#touch aaa
[root@gitlab docker]#git add .
[root@gitlab docker]#git commit -m "master add aaa"
[master 0aed20d] master add aaa
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 aaa
[root@gitlab docker]#git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 258 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@gitlab.john5.com:test/docker.git
c50a78e..0aed20d master -> master
Branch master set up to track remote branch master from origin.
查看bbb的哈希值
[root@gitlab docker]#git log --oneline
3def1c0 master add bbb
0aed20d master add aaa
c50a78e del tag
给hash值打标
[root@gitlab docker]#git tag -a "v1.0" 0aed20d -m "master add aaa"
把标签推到远程master
-
[root@gitlab docker]#git push -u origin master v1.0 Counting objects: 1, done. Writing objects: 100% (1/1), 158 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) To git@gitlab.john5.com:test/docker.git * [new tag] v1.0 -> v1.0 Branch master set up to track remote branch master from origin.
查看标签详情
[root@gitlab docker]#git show v1.0
tag v1.0
Tagger: john5 <314108534@qq.com>
Date: Fri Apr 17 23:30:26 2020 +0800
master add aaa
commit 0aed20d9674b59ae9d3f48a7d3646e59f165bf4f
Author: john5 <314108534@qq.com>
Date: Fri Apr 17 23:22:53 2020 +0800
master add aaa
diff --git a/aaa b/aaa
new file mode 100644
index 0000000..e69de29
删除远程标签
git push origin :refs/tags/v1.0
git push origin :refs/tags/v2.0
dev1分支查看多了tags v1.0标签,代表v1.0某个版本,查看操作很方便
gitlab备份恢复
ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C “Key for Gitlab stuff”