Git系列四之在本地服务器搭建gitlab仓库管理

本文详细介绍如何使用Git进行仓库管理,包括部署开源仓库GitLab、添加远程仓库、修改远程仓库URL、查看远程仓库信息、推送及拉取数据等操作。通过具体步骤与实例,帮助读者掌握Git远程仓库的基本管理技能。

1.Git仓库管理

  现在本地已经创建了git仓库,又在gitlab上创建了一个git仓库,并且让这两个仓库进行远程同步,这样gitlab仓库既可以备份也可以与他人协作管理远程仓库以及根据需要推送或拉取数据。 
  管理远程仓库包括了如何添加远程仓库、移除无用远程仓库、查看远程仓库、修改远程仓库等。

1.1部署开源仓库

GitLab 是一个用于仓库管理系统的开源项目。

 
1.安装配置gitlab依赖项 
如想使用Postfix来发送邮件,在安装期间请选择'Internet Site'. 您也可以用sendmai或者 配置SMTP服务并使用SMTP发送邮件.在 Centos7系统上, 下面的命令将在系统防火墙里面开放HTTP和SSH端口.

  1. [root@git-node1 ~]# yum install curl openssh-server postfix
  2. [root@git-node1 ~]# systemctl enable sshd postfix
  3. [root@git-node1 ~]# systemctl start sshd postfix
  4. [root@git-node1 ~]# firewall-cmd --permanent --add-service=http
  5. [root@git-node1 ~]# systemctl reload firewalld

2.添加GitLab仓库,并安装到服务器

  1. [root@git-node1 ~]# curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
  2. [root@git-node1 ~]# yum install gitlab-ce

3.启动GitLab

   1.gitlab-ctl reconfigure

       2.浏览到主机名和登录Browse to the hostname and login 
       3.首次访问GitLab,系统会让你重新设置管理员的密码,设置成功后会返回登录界面. 
       4.默认的管理员账号是root,如果你想更改默认管理员账号,请输入上面设置的新密码登录系统后修改帐号名. 

       5.创建key

[root@git-node1 demo]# ssh-keygen   #一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
48:94:9a:65:cd:0f:f3:17:c6:dc:3c:28:0a:bb:47:98 root@git-node1
The key's randomart image is:
+--[ RSA 2048]----+
|      .+   o +   |
|     .= = . * +  |
|     =.= * o . . |
|    o.E.o o .    |
|      .oS  .     |
|      . .        |
|       .         |
|                 |
|                 |

  6.复制id_rsa.pub公钥

[root@git-node1 demo]# cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyVSAhs+ZBTEwv5nMwyoordV4VBy+DoCyGBJcjqkcfagRyyGUZvS57T4rhgSpz2csMTtxBXAyo0vJltxPr8McsZmcDZ8+t5qr22h9wHULFs5uB5/uZ6CDomm
/rVtJjiT2l1Uzh14De1CJDbNRPTCbxvcD5Mi7Ko29epymdt8agYqV2+ROynYaSjqcKxuo6pXD/cGskO7JTOkek2wxmTFOxFQR/Ec1LtVk8ilcesENzMdeU4Nwr2lec6Lr++qKXQuO7a3vB4958Hfhh1JlRI
ShDuHBOsFChG+vJim6tl123k7jjePHxJhUORhVMpmD4pMNwN+NYv1ta3J3ZSW6v5uWxw== root@git-node1

  7.添加公钥至gitlab,如图1-6-1 

gongyao 

图1-6-1添加服务器公钥

1.2添加远程仓库

1.gitlab创建仓库,进行远程同步,如图1-6-2 
image_1ba739sh72rd1m6a1thm19k7dbi24.png-49kB 

图1-6-2gitlab创建远程仓库

 

2.使用git remote 添加远程仓库地址,选择SSH方式克隆。

  1. [root@git-node1 ~]# cd demo/ //必须是git init 初始化仓库目录
  2. [root@git-node1 demo]# git remote add origin git@git-node1:root/git_demo.gitxxx

1.3修改远程仓库

由于刚开始添加的远程仓库写错了url,现在通过如下命令进行url修改

  1. [root@git-node1 demo]# git remote set-url origin git@git-node1:root/git_demo.git

1.4查看远程仓库

如果已经配置了远程仓库服务器,可以运行 git remote命令。它会列出你指定每一个远程服务器的简写。

  1. [root@git-node1 demo]# git remote
  2. origin

也可以指定-v选项,会显示需要读写远程仓库git保存简写名称以及对应的URL地址。

  1. [root@git-node1 demo]# git remote -v
  2. origin git@git-node1:root/git_demo.git (fetch)
  3. origin git@git-node1:root/git_demo.git (push)

1.5推送远程仓库

将本地库更新内容推送至远程,用git push命令,实际上是将当前分支推送至远程仓库。 
由于远程库是新建立空的,我们在第一次推送时候,git默认是不会把本地master关联至远端的master,所以我们需要加上-u参数,这样git不但会把本地的master分支内容推送至远程仓库的master分支,并且还会将本地的master分支和远程master分支关联起来。在以后推送或者拉取时就可以简化命令。

  1. [root@git-node1 demo]# git push -u origin master
  2. Counting objects: 5, done.
  3. Compressing objects: 100% (2/2), done.
  4. Writing objects: 100% (5/5), 432 bytes | 0 bytes/s, done.
  5. Total 5 (delta 0), reused 0 (delta 0)
  6. To git@git-node1:root/git_demo.git
  7. * [new branch] master -> master
  8. 分支 master 设置为跟踪来自 origin 的远程分支 master

如果推送冲突可以选择--force强行推送

  1. [root@git-node1 xuliangwei]# git push origin --force
  2. 如果一次都没有推送数据,可以选择—all一次全部推送至远程服务器
  3. [root@git-node1 xuliangwei]# git push origin --all
 

1.6克隆远程仓库

如果现在仓库已经有开发好的项目,需要加入进来开发,可以先clone整个项目。

  1. [root@git-node1 tmp]# git clone git@git-node1:root/git_demo.git
  2. 正克隆到 'git_demo'...
  3. remote: Counting objects: 5, done.
  4. remote: Compressing objects: 100% (2/2), done.
  5. remote: Total 5 (delta 0), reused 0 (delta 0)
  6. 接收对象中: 100% (5/5), done.

1.7拉取远程仓库

简单的说,这个命令会访问远程仓库,从中取出你还没有的数据,或者git pull之后还是没有的数据。 
此前在添加的远程仓库的时候指定了仓库名origin,命令会自动将其添加为远程仓库并默认以origin为简写。 
所以,git fetch origin相当于从远程获取最新版本到本地,然后比较本地master分支和远程master分支差别最后进行合并。

  1. [root@git-node1 demo]# git fetch origin //拉取主分支最新版本(可以拉取其他分支)
  2. [root@git-node1 demo]# git fetch origin dev //获取dev分支最新数据

拉取数据,在生产环境中见到比较多的还是git pull相当于是从远程获取最新版本并merge到本地

  1. [root@git-node1 xuliangwei]# git pull origin master #拉取主分支最新版本(可以拉取其他分支)
  2. [root@git-node1 xuliangwei]# git pull origin dev //获取dev分支最新数据

上述命令其实相当于git fetch 和 git merge在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并 
1.6.8更改远程仓库

如果想重新命名一个远程仓库名称。将test重命名为rainbow,可以通过git remote rename进行修改。 
注意:这同时会修改你的远程分支名字。之前引用test/master的现在会引用rainbow/master 
1.添加新远程分支,并赋予test为远程仓库名称

  1. [root@git-node1 git_demo]# git remote add test git@git-node1:root/git_demo.git
  2. [root@git-node1 git_demo]# git remote -v
  3. origin git@git-node1:root/git_demo.git (fetch)
  4. origin git@git-node1:root/git_demo.git (push)
  5. test git@git-node1:root/git_demo.git (fetch)
  6. test git@git-node1:root/git_demo.git (push)

2.修改test名称为rainbow名称

  1. [root@git-node1 git_demo]# git remote rename test rainbow
  2. [root@git-node1 git_demo]# git remote -v
  3. origin git@git-node1:root/git_demo.git (fetch)
  4. origin git@git-node1:root/git_demo.git (push)
  5. rainbow git@git-node1:root/git_demo.git (fetch)
  6. rainbow git@git-node1:root/git_demo.git (push)

1.9移除远程仓库

因为一些变动不再使用一些特定的镜像,可以通过git remote remove 远程仓库名称,移除远程仓库 
1.查看远程仓库

  1. [root@git-node1 git_demo]# git remote -v
  2. origin git@git-node1:root/git_demo.git (fetch)
  3. origin git@git-node1:root/git_demo.git (push)
  4. rainbow git@git-node1:root/git_demo.git (fetch)
  5. rainbow git@git-node1:root/git_demo.git (push)

2.移除不再使用的rainbow远程仓库

  1. [root@git-node1 git_demo]# git remote remove rainbow
  2. [root@git-node1 git_demo]# git remote -v
  3. origin git@git-node1:root/git_demo.git (fetch)
  4. origin git@git-node1:root/git_demo.git (push)
 

1.10Git远程仓库小结

  要添加一个仓库,首先必须知道仓库的地址,然后使用git remote add 命令添加远程仓库,也可使用git clone命令克隆。(Git支持多种协议,包括http、https,但通过ssh支持的原生git协议速度最佳。) 


  要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git,关联后,使用命令git push -u origin master第一次推送master分支的所有内容,此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

    1. # git remote add [remote] [url]#添加(关联)远程库
    2. # git remote set-url [remote] [url] #修改远程仓库
    3. # git clone [url] #克隆远程仓库项目
    4. # git remote #查看指定远程仓库命名简写
    5. # git remote –v #查看远程仓库详细信息以及名称对应URL
    6. # git push -u remote master #第一次推送master分支的所有内容
    7. # git fetch remote [branch/tag] #下载远程仓库的所有变动
    8. # git pull remote [branch/tag] #拉取主分支最新版本(可以拉取其他分支)
    9. # git push remote [branch/tag] --force #强行推送当前分支至远程分支,及时冲突
    10. # git push remote [branch/tag] --all #推送所有分支到远程仓库
    11. # git remote rename [oldname] [newname] #修改远程仓库名称
    12. # git remote remove [name] #删除远程仓库名称以及URL地址

转载于:https://www.cnblogs.com/nulige/p/6825625.html

<think>好的,我现在需要帮用户解决如何将本地Git仓库推送到自建的GitLab服务器的问题。首先,我得回忆一下用户提供的引用内容,看看有没有相关的步骤或者注意事项。 用户提到了个引用,其中引用1、3、4应该和Git操作相关。引用1提到了前置条件,比如本地密钥已经添加到GitLab,确保SSH通信正常,还有在GitLab上创建项目。步骤包括初始化本地仓库,关联远程地址,然后推送。引用3是关于Git命令的,比如git add、commit、push这些基本操作,还有分支管理。引用4提到了使用SourceTree和生成SSH密钥的部分,可能涉及到密钥配置的问题。 首先,用户的需求是将本地仓库推送到组织的GitLab服务器,属于自建环境。所以需要确认用户是否已经完成了前置条件,比如SSH密钥的配置和在GitLab上创建了空项目。如果用户没有完成这些,需要先指导他们完成。 然后,按照步骤来说,初始化本地仓库、关联远程仓库、添加文件、提交、推送这些步骤是必须的。可能还需要注意远程仓库的名称是否正确,通常是origin,但有时候可能不同。另外,分支的问题也很重要,引用2提到使用--mirror参数推送可能会导致分支不可见,所以可能需要明确使用git push -u origin master这样的命令,特别是第一次推送的时候要设置上游分支。 还要考虑是否有冲突或者历史记录的问题,如果本地仓库已经有内容,而远程仓库是新建的空仓库,直接推送应该没问题。但如果远程仓库已经有文件,可能需要先拉取合并,但用户的情况应该是首次推送,所以可能不需要处理冲突。 另外,用户可能遇到的问题比如权限不足,SSH连接失败,或者远程地址错误。这时候需要提示用户检查SSH密钥是否添加正确,以及远程地址是否准确,比如使用SSH还是HTTPS的URL。 可能还需要提到如何验证是否成功,比如执行git remote -v查看远程仓库地址,或者直接访问GitLab页面查看是否有提交记录。 总结一下,步骤应该是: 1. 检查SSH密钥配置,确保本地机器可以连接GitLab。 2. 在GitLab上创建空项目,获取仓库URL。 3. 初始化本地仓库(如果还没初始化的话)。 4. 关联远程仓库地址。 5. 添加文件、提交更改。 6. 推送到远程仓库,可能需要指定分支,尤其是首次推送使用-u参数。 同时,需要提醒用户常见的错误点,比如远程仓库地址错误,密钥未添加,或者分支名称不对。此外,引用3中的git push命令可能会有不同的选项,需要根据情况选择,比如直接推送master分支还是所有分支。 可能还需要提到如果遇到问题如何排查,比如用ssh -T测试连接,或者查看git命令的错误信息。例如,如果出现权限被拒绝,可能是密钥问题;如果URL错误,git会提示无法访问仓库。 最后,生成相关问题的时候,要考虑用户可能接下来会问的问题,比如如何解决推送失败,如何添加多个远程仓库,或者如何克隆现有仓库等。</think>### 分步指南:将本地Git仓库推送到自建GitLab服务器 #### 前置条件 1. **SSH密钥配置**:本地机器的SSH公钥需添加到GitLab账户的`SSH Keys`中,确保SSH通信正常[^1][^4]。 - 生成密钥命令:`ssh-keygen -t rsa -C "your_email@example.com"`(三次回车默认生成) - 公钥路径:`~/.ssh/id_rsa.pub`,复制内容到GitLab设置中 2. **创建远程仓库**:在GitLab服务器上新建空项目,获取仓库的SSH或HTTPS地址(如`git@gitlab.example.com:group/project.git`) #### 操作步骤 1. **初始化本地仓库** ```bash cd /path/to/local/project git init ``` 2. **关联远程仓库地址** ```bash git remote add origin <GitLab仓库URL> # 验证关联:git remote -v 应显示fetch/push地址[^1] ``` 3. **添加文件并提交** ```bash git add . # 添加所有文件到暂存区[^3] git commit -m "Initial commit" # 提交到本地仓库 ``` 4. **推送到远程仓库** ```bash git push -u origin master # 首次推送需指定上游分支[^3] # 后续推送可直接使用 git push ``` #### 关键注意事项 - **分支可见性**:若使用`git push --mirror`会推送所有引用(包括隐藏分支),建议明确指定分支(如`master`或`main`)[^2] - **权限问题**:确保GitLab项目权限允许推送(如开发者角色) - **地址错误处理**:若关联错误,可先删除远程链接:`git remote remove origin`,再重新关联 #### 常见问题排查 - **SSH连接测试**:`ssh -T git@gitlab.example.com` 应返回欢迎信息[^4] - **推送失败**:检查远程地址、密钥权限、分支名称是否冲突 - **历史记录冲突**:若远程仓库非空,需先执行`git pull --rebase`合并变更
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值