git 项目用户组关联 master分支操作, tag

bash

服务 ip /主机名 功能
gitlab gitlab 10.0.0.203 master分支
jenkins jenkins01 10.0.0201 dev1分支

创建test组

git
项目用户组关联
master分支操作,
tag

git
项目用户组关联
master分支操作,
tag

创建dev1用户

git
项目用户组关联
master分支操作,
tag

git
项目用户组关联
master分支操作,
tag

git
项目用户组关联
master分支操作,
tag

把dev1用户关联到test组

git
项目用户组关联
master分支操作,
tag

git
项目用户组关联
master分支操作,
tag

git
项目用户组关联
master分支操作,
tag

创建docker项目,把test组添加到项目里

git
项目用户组关联
master分支操作,
taggit
项目用户组关联
master分支操作,
tag

仓库使用命令

  1. 全局配置

git config --global user.name "dev1"
git config --global user.email "314108534.com"
  1. ​ 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
  1. ​ 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
  1. ​ 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拉代码到本地复制这个地址

复制这个地址

git
项目用户组关联
master分支操作,
tag

给从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分支查看有了数据

git
项目用户组关联
master分支操作,
tag

把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用户下

git
项目用户组关联
master分支操作,
tag

拉代码到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个文件

git
项目用户组关联
master分支操作,
tag

git
项目用户组关联
master分支操作,
tag

切换到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

git
项目用户组关联
master分支操作,
tag

git
项目用户组关联
master分支操作,
tag

web界面点击合并

git
项目用户组关联
master分支操作,
taggit
项目用户组关联
master分支操作,
taggit
项目用户组关联
master分支操作,
taggit
项目用户组关联
master分支操作,
tag

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某个版本,查看操作很方便

git
项目用户组关联
master分支操作,
tag

git
项目用户组关联
master分支操作,
tag

gitlab备份恢复

git
项目用户组关联
master分支操作,
tag

ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C “Key for Gitlab stuff”