Git 分布式版本控制工具详解以及在Gitee,Github中的使用和Gitlab部署(三)

125 阅读5分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第21天,点击查看活动详情

三、Gitee

注册马云账号并登录,在码云官网上方的导航栏 ,点击"加号",选择新建仓库,然后给我们的仓库命个名,访问权限就阔以了,其他的选择默认的选项就可以。

仓库创建完之后可以看到仓库地址:如图所示:

在这里插入图片描述

1. 配置SSH秘钥

  • 生成SSH公钥

    • 输入 ssh-keygen -t rsa 然后不断回车就阔以了
    • 如果公钥已经存在,则会自动覆盖
  • Gitee 设置账户的公用秘钥

    • 获取秘钥:cat ~/.ssh/id_rsa.pub

    • 将 bash 命令行里面出来的内容复制到 码云官网--个人头像--设置--安全设置--SSH公钥 的公钥栏里面(标题的话 ,随便输入点东西就可以),然后确定,之后会让我们再输入以下密码确认一下身份,然后就配置成功了。

    • 验证是否配置成功:bash 终端输入:

      ssh -T git@gitee.com 
      # 然后在输入一个 yes 就可以了
      

      具体的代码如下:

    17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
    $ ssh -T git@gitee.com       		#下面的这一部分内容是由于我们是第一次连接才出现的提示内容,直接选择 yes 选项输入即可
    The authenticity of host 'gitee.com (212.64.62.183)' can't be established.
    ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added 'gitee.com' (ED25519) to the list of known hosts.
    Hi 池木! You've successfully authenticated, but GITEE.COM does not provide shell access.
    # 出现上面的 提示 ,就代表着公钥我们已经配置成功了。
    

2. 操作远程仓库

2.1添加远程仓库

此操作是先初始化本地的仓库,然后与已创建的远程仓库进行对接

  • 命令: git remote add <远端名称> <仓库路径>

  • 命令解释:根据仓库路径添加一个远程仓库,将该仓库命名为 我们设置的 远端名称

  • 远端名称,默认是origin,取决于远端服务器设置

  • 仓库路径,从远端服务器获取此URL--(我们在码云上选中SSH时候显示的地址)

  • 例如: git remote add origin git@gitee.com:example/git_test.git

  • 示例代码如下:

17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
$ git remote add origin git@gitee.com:example/git_test.git  #添加远程仓库

17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
$ git remote		#查看远程仓库(有结果,证明连接成功了)
origin

2.2查看远程仓库

  • 命令 :git remote
17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
$ git remote		#查看远程仓库(有结果,证明连接成功了)
origin

2.3推送到远程仓库

  • 命令:git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ]

如果远程分支名和本地分支名称相同,则可以只写本地分支

  • git push origin master

  • -f 表示强制覆盖(一般是不使用的)

  • -u 或者 --set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。

  • git push --set-upstream origin master

如果当前分支已经和远端分支关联,则可以省略分支名和远端名。

  • git push 将master分支推送到已关联的远端分支。
  • 补充:查看分支之间(本地分支与远程分支)的绑定关系:git branch -vv
# git push origin master:master 可以简写为 git push origin master  (咱就是说:后面的那个本地分支呵呵远端分支一样的时候,可以简写成一个)
17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
$ git push origin master
#下面的这一部分是我们在第一次 push 的时候才会提示的内容,后面我们进行 push  的时候就不会有这种提示信息了
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 8 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (12/12), 900 bytes | 450.00 KiB/s, done.
Total 12 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To gitee.com:amazingABC/git_test.git
 * [new branch]      master -> master

17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
#当我们直接使用git push 的时候,他不让 push ,需要我们进行绑定(因为我们也没有制定,他也不知道怎么 push ),这里他也提醒我们使用 --set-upstream
$ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master


17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
# 查看分支之间的绑定关系(现在没有绑定关系)
$ git branch -vv
  dev    33e8925 dev-2
* master e1e8740 update what we want

17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
# 分支绑定,将本地的 master 分支绑定到 外端的 master 分支(之后,我们在 master 分支下面执行 git push 命令的时候就会直接将本地的 master 分支 push 到外端的 master 分支上面)
$ git push --set-upstream origin master:master
Everything up-to-date
Branch 'master' set up to track remote branch 'master' from 'origin'.

17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
# 查看分支之间的绑定关系(绑定之后,下面我们就可以看到绑定关系  本地的 master 绑定到 origin/master 即外端的 master 分支)
$ git branch -vv
  dev    33e8925 dev-2
* master e1e8740 [origin/master] update what we want

17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
# 本地的 master push 到 origin/master 即外端的 master 分支
$ git push
Everything up-to-date

17946@LAPTOP-6TK990GF MINGW64 /d/webpra/gittest (master)
$

2.4从远程仓库克隆

  • 如果已经有一个远端仓库,我们可以直接clone到本地。

    • 命令: git clone <仓库路径> [本地目录]
    • 本地目录可以省略,会自动生成一个目录(远程的仓库的名字);如果不省略的话,我们所制定的本地目录就是我们将远程的仓库要克隆到的文件目录

2.5从仓库送抓取和拉取

远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。

抓取 命令:git fetch [remote name] [branch name]

抓取指令就是将仓库里的更新都抓取到本地,不会进行合并

黑马程序员 北京昌平校区如果不指定远端名称和分支名,则抓取所有分支。

拉取 命令:git pull [remote name] [branch name]

拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于 fetch+merge

如果不指定远端名称和分支名,则抓取所有并更新当前分支。

2.6 解决合并冲突

在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。

A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支,如下图所示。

在这里插入图片描述

我们一般在本地的话,是先执行一下 pull 指令,然后再执行 push 上传到远端,(这样的话,如果有冲突,我们在本地执行 pull 的时候就会报出来这个冲突,然后我们可以进行及时的更改;但是如果直接执行 push 的话,这个冲突就不是那么好解决的了!)

2.7 Gitee 复制 Github 仓库

在Gitee 中创建仓库的时候,我们就可以直接使用 创建已有仓库,然后使用 github 的链接到 Gitee 上面,就会迁移到 我们的码云上面的

  • 如果 我们 Github 上面的代码发生了更改,我们就可直接使用我们码云的仓库后面的 刷新 符号,进行刷新,然后我们就可以将内容实现和 Github 上的代码仓库中的内容的同步了