搭建同时使用 Gitlab 和 Github 的开发环境

Git 客户端与服务器端的通信支持多种协议,ssh 最常用。ssh的公钥登录流程:用户将自己的公钥存储在远程主机,登录时,远程主机会向用户发送一条消息,用户用自己的私钥加密后,再发给服务器。远程主机用事先存储的公钥进行解密,如果成功,就证明用户可信。

生成公私密钥

用户必须事先提供自己的公钥给服务器,如果没有,可以用 ssh-keygen 命令生成。该命令会生成两个文件(公钥 and 私钥),默认路径在用户根目录下的.ssh文件夹中。

注意: 默认生成的文件名是 id_rsa/id_rsa.pub,由于这里需要两套密钥,所以需为它们分别命名,以防止互相覆盖。

执行下面命令生成密钥:

  • 生成gitlab公私密钥
ssh-keygen -t rsa -C "wytomail@126.com"  #注册gitlab账户的邮箱
#提示要输入名称时输入  id_rsa_gitlab
  • 生成github 公私密钥
ssh-keygen -t rsa -C "wytomail@126.com" #注册github账户的邮箱
#提示要输入名称时输入   id_rsa_github

提供公钥给服务器:

复制 ~/.ssh/id_rsa_gitlab.pub文件内容,进入gitlab / profile / SSH Keys,将公钥内容添加至 gitlab 。
复制 ~/.ssh/id_rsa_github.pub文件内容,进入github / setting / SSH and GPG keys / New SSH key 将公钥内容添加至 github 。

更新SSH配置

SSH 配置信息加载顺序如下:

用户级别的配置文件~/.ssh/config
系统级别的配置文件 /etc/ssh/ssh_config

根据我们实际情况,更新用户级别配置信息即可,打开 SSH 客户端配置文件 ~/.ssh/config 增加配置项,如果没有就创建一个(是文本文件)。

SSH配置项有很多,详见:https://man.openbsd.org/ssh_config 或r https://www.ssh.com/ssh/config/

在配置文件中加入以下内容

Host github.com
    HostName github.com
    User githubuser@xyz.com
    IdentityFile ~/.ssh/id_rsa_github

Host gitlab.com
    HostName gitlab.com
    User gitlabuser@xyz.com
    IdentityFile ~/.ssh/id_rsa_gitlab

配置仓库用户信息

Git 配置信息也有三个地方可以存储,根据加载顺序依次为:

  1. /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。

  2. ~/.gitconfig 或 ~/.config/git/config 文件只针对当前用户。 可以传递 --global 选项让 Git 读写此文件。
    当前使用仓库的 Git 目录中的 config 文件(就是 .git/config)

不同仓库链接不同的服务器,所用的git用户信息也不同。可以把常用的git用户信息配置到 ~/.gitconfig 中,不常用的我们在仓库中单独配置。

以常用 gitlab 为例:
配置当前用户github仓库

git config --global user.name "wenyuan"
git config --global user.email "wytomail@126.com"

进入本地 github 仓库配置 git 用户信息

git config --local user.name "wenyuan"
git config --local user.email "wytomail@126.com"

git添加远程库的时候有可能出现如下的错误,
在这里插入图片描述
怎么解决?
只要两步:

1、先删除

git remote rm origin

2、再次执行添加就可以了。

----------------------------------------------git常用操作------------------------------------------------

touch README.md //创建README.md文件
pwd //显示当前目录
1、常用CRT
git init //初始化代码仓库
git add learngit.txt //把所有要提交的文件修改放到暂存区
git commit -m ‘add a file’ //把暂存区的所有内容提交到当前分支
git status //查看工作区状态
git diff //查看文件修改内容
git log //查看提交历史
git log --pretty=oneline //单行显示
git reset --hard HEAD^         //回退到上一个版本,其中(HEAD^^(上上版本),HEAD~100(往上100个版本))
git commit id //(版本号) 可回到指定版本
git reflog //查看历史命令

git diff HEAD – //查看工作区和版本库里最新版本的区别
git checkout – //用版本库的版本替换工作区的版本,无论是工作区的修改还是删除,都可以’一键还原’
git reset HEAD //把暂存区的修改撤销掉,重新放回工作区。
git rm //删除文件,若文件已提交到版本库,不用担心误删,但是只能恢复文件到最新版本

5、分支
git checkout -b dev //创建并切换分支
#相当于git branch dev 和git checkout dev
git branch //查看当前分支,当前分支前有个*号
git branch //创建分支
git checkout //切换分支
git merge //合并某个分支到当前分支
git branch -d //删除分支
git log --graph //查看分支合并图
git merge --no-ff -m ‘message’ dev //禁用Fast forward合并dev分支

git stash //隐藏当前工作现场,等恢复后继续工作
git stash list //查看stash记录
git stash apply //仅恢复现场,不删除stash内容
git stash drop //删除stash内容
git stash pop //恢复现场的同时删除stash内容
git branch -D //强行删除某个未合并的分支

//开发新feature最好新建一个分支
git remote //查看远程仓库
git remote -v //查看远程库详细信息

git pull //抓取远程提交
git checkout -b branch-name origin/branch-name //在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name //建立本地分支和远程分支的关联

6、其他—标签
git tag v1.0 //给当前分支最新的commit打标签
git tag -a v0.1 -m ‘version 0.1 released’ 3628164 //-a指定标签名,-m指定说明文字
git tag -s -m ‘blabla’ //可以用PGP签名标签
git tag //查看所有标签
git show v1.0 //查看标签信息
git tag -d v0.1 //删除标签
git push origin //推送某个标签到远程
git push origin --tags //推送所有尚未推送的本地标签

参考网站:
https://www.cnblogs.com/kelsen/archive/2018/01/24/8342239.html
https://www.cnblogs.com/leaf930814/p/6664706.html

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值