Git

Git 关联远程仓库

Posted by 彭楷淳 on 2021-01-31
Estimated Reading Time 5 Minutes
Words 1.4k In Total
Viewed Times

配置 SSH KEY


SSH KEY 的配置不是必须的,不配置的话我们就只能使用 HTTPS 协议,这样每次提交时要输入用户名密码,略麻烦,所以还是配置一下。配置 SSH KEY 的原理很简单,采用非对称加密方式生成公钥和私钥,公钥告诉 GitHub ,私钥留在自己电脑上(私钥不可泄露),当我们向 GitHub 上提交数据时,GitHub 会用我们留给它的公钥加密一段消息返回给我们的电脑,如果我们能够用私钥解密成功,说明是合法的用户,这样就避免我们输入用户名密码了。大致的原理就是这样,现在很多免登录的系统都采用了这种方式,比如 Hadoop 免登录配置也是这样。那我们就来看看这个 SSH KEY 要怎么生成。

查看本地是否已有 SSHKEY

查看当前用户目录下是否有 .ssh 文件,如下:

img

如果查看之后有结果,则直接跳转到第四步,什么都没有就继续生成。

生成 SSH 指纹

生成 SSH 指纹的命令很简单,如下:

1
$ ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"

注意邮箱地址要替换。

添加 ssh 到 ssh-agent 中

执行如下命令即可:

1
$ eval "$(ssh-agent -s)"

做好这一切之后,我们当前用户目录下已经有了一个名为 .ssh 的隐藏文件夹了,打开这个目录,会发现有一个名为 id_rsa.pub 的文件,这就是我们一会要使用的公钥文件。

将公钥告诉 GitHub

登录 GitHub ,点击右上角的向下的箭头,选择 Settings ,在新打开的页面中左边侧栏选择 SSH and GPG keys ,如下:

img

完了之后点击最下面的 Add SSH key 按钮即可,如此之后,我们的 SSH KEY 就配置成功了。

创建远程仓库


接下来我们在 GitHub 上创建一个仓库,登录成功之后,直接点击右上角绿色的 New repository 按钮,如下:

img

其实这里我们只需要填一个版本仓库的名字,我填了 test,填好之后,点击 Create repository 就 OK 了。

关联远程仓库


创建成功之后,我们会看到仓库的地址,如下: git@github.com:lenve/test.git ,然后我需要将我们之前的本地仓库和这个远程仓库进行关联,使用 git remote add 命令,如下:

1
$ git remote add origin git@github.com:lenve/test.git

在这条命令中,git 会自动将远程仓库的名字设置为 origin ,方便我们的后续操作。

推送到远程仓库


推送到 master 分支

假设我想将本地 master 分支上的内容推送到远程 master 分支上,方式如下:

1
$ git push -u origin master

-u参数可以在推送的同时,将 origin 仓库的 master 分支设置为本地仓库当前分支的 upstream(上游)。添加了这个参数,将来运行 git pull 命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从 origin 的 master 分支获取内容,省去了另外添加参数的麻烦。这个参数也只用在第一次 push 时加上,以后直接运行 git push 命令即可。

推送到其他分支

如果想推送到其他分支,还是这条命令,修改一下分支的名字即可,比如我也想把我的 fa 分支推送到远程仓库中,执行如下命令:

1
2
$ git checkout fa
$ git push -u origin fa

先切换到 fa 分支,然后执行 git push 命令,参数含义和之前的一样,这里我们创建的远程仓库的分支名也为 fa(当然我们可以取任何名字,但是为了不混淆,最好取一致的名字)。这两条命令执行成功之后,此时在网页中我们就可以看到已经有多个分支了,如下:

img

从远程仓库获取


首次获取

刚刚是我们向远程仓库提交数据,有提交当然就有获取,我们可以通过 git clone 命令克隆一个远程仓库到本地,方式也简单,在本地创建一个空文件夹,执行如下命令:

1
$ git clone git@github.com:lenve/test.git

表示克隆文件到本地仓库。此时克隆的远程仓库的 master 分支到本地仓库,我们可以通过 git branch -a 来查看本地仓库和远程仓库的信息,-a 参数可以同时显示本地仓库和远程仓库的信息,如下:

img

我们看到远程仓库中已经有了 fa 分支了,如果我们想把 fa 分支也克隆下来,执行如下命令:

1
$ git checkout -b fa origin/fa

表示根据远程仓库的 fa 分支创建一个本地仓库的 fa 分支,创建完成之后进行切换,也可以通过如下命令只创建不切换:

1
$ git branch fa origin/fa

此时我在 fa 分支下修改 git01.txt 文件并提交,如下:

img

注意由于 fa 分支就是从远程仓库克隆下来的,所以这里可以不添加 -u 参数。

从远程仓库更新

此时我们回到第一次最早的那个 test 本地仓库中,那个 test 仓库的 fa 分支现在和远程仓库不一致了,我们可以通过 git pull 命令来更新,如下:

img

更多干货请移步:https://antoniopeng.com


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !