美文网首页
OS环境下在VScode内使用github基础(二)建立与远程仓

OS环境下在VScode内使用github基础(二)建立与远程仓

作者: Steve_Lv | 来源:发表于2020-05-04 23:58 被阅读0次

    OS环境下在VScode内使用github基础(一)本地仓库中已经介绍了,如何在本地新建一个仓库。这里将继续介绍一下自己将本地仓库与远程仓库建立连接的方式。

    新建的本地仓库与clone下来的本地仓库间还是有着比较大的区别的。由于从远程clone到本地的分支自动建立关联,而本地与远程建立了pull的关系但无法push,强行push会出现upstream问题,建立连接的过程会比较繁琐,在大部分情况下,直接在github内建立仓库然后clone至本地会是更加简便的方法。

    上篇文章中,已经完成了本地仓库的建立与commit操作,接下来要实现的就是将本地仓库push至远程仓库。

    1. 配置SSH

    1.1 生成SSH

    上传github有两种方式,使用配对的SSH密钥或者账号密码方式,前者一次设定即可,后者应该也有记忆功能,但在个人使用过程中出不来要求输入密码的界面,有两次出现后输入密码后并不显示,光标在原地不动,根据他人经验贴,实际密码已经输入进去了,只需要回车即可。有兴趣的读者可以自己尝试,若知道为何时而才出现输入密码命令,希望可以分享一下~这里密钥的配置方法也是手册的直接转述。
    密钥一般默认存储在~/.ssh目录下,生成密钥前,可以首先检查一下是否已经生成过密钥。使用 cd ~/.ssh 命令,若有密钥将会出现以下内容:

    $ cd ~/.ssh
    ls
    authorized_keys2  id_dsa       known_hosts
    config            id_dsa.pub
    

    其中.pub文件为公钥而另一个即对应的私钥。第一次设置本地仓库连接前应当是没有密钥的,需要我们生成一对公钥与私钥。输入ssh-keygen -t rsa -C "邮箱地址" 命令后,就可以看到以下文本了

    $ ssh-keygen -t rsa -C "email@email.com" 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
    Created directory '/home/schacon/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/schacon/.ssh/id_rsa.
    Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
    The key fingerprint is:
    d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local
    

    其中后面的几行是分开出现的,只需要我们按几次enter键确认即可。当最后四行出现时,我们的密钥就生成完毕了,然后再使用 cat命令调用出.pub文件即公钥的内容,并复制到github中就完成了SSH的配置。要复制的内容是从第二行开始的所有文本。

    $ cat ~/.ssh/id_rsa.pub
    ssh-rsa AAAAB3N...
    ...NrRFi9wrf+M7Q== schacon@mylaptop.local
    

    1.2 在gihub中配置SSH

    复制好公钥后,登陆github帐户,点击头像,依次点击Settings -> 左边栏 SSH and GPG keys -> New SSH key,会出现两个内容框tittle与key,在key中粘贴刚才复制的公钥,tittle可以随便输入,建议设置为私钥所在的设备,如Steve's Macbook Air。

    2. 初次上传

    cd 项目所在目录 #首先cd至项目所在目录
    git init #初始化本地仓库,若已初始化可以省略
    git add README.md 
    git commit -m "first commit" #add并commit''README.md''文件至本地仓库中
    git remote add origin git@github.com:XXXX/XXXX.git #初始化所要上传的远程仓库
    git push -u origin master  #将本地仓库push至远程仓库
    

    代码中前四行为本地仓库操作不做赘述。刚开始操作时,只需复制黏贴所有内容即可,若想要更好理解5、6两行的内容,后面是一些解释说明。

    首先,第5行''git remote add origin''后的内容是仓库地址,要获取地址在仓库内点击clone -> Use SSH 就可以看到SSH方式上传所用的仓库地址,直接复制即可。初始化远程仓库后,所在的本地仓库在之后都会以此作为对应的远程仓库。以后要是想知道这个仓库对应远程仓库信息,使用git remote -v命令即可。

    git remote -v #查看当前对应的远程仓库信息
    

    如果想要更改对应的远程仓库,就需要首先删除当前设置的origin,然后再次添加新的origin。

    git remote rm origin #删除设置
    git remote -v #再次查看远程信息应当不会显示任何内容
    git remote add origin git@github.com:XXXX/XXXX.git #初始化所要上传的远程仓库
    

    关于origin具体所指的是什么,可以参考这篇文章github中origin和upstream的区别

    然后,我们再来解释'git push -u origin master'命令。git push十分易于理解,即一个push命令。使用参数-u是因为使用后,下次可以直接使用git push代替git push origin master。master是指定上传master分支。

    $ git push
    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
    

    若看过上一个文章链接,会对upstream有更多一些的理解。具体对此命令解释可以参考此篇文章git push origin和git push -u origin master区别

    *可能遇到的问题:

    如果远程仓库并非一个新建的空仓库,直接push,github会操作失败。因为本地和远程的内容不一致,远程有本地所没有的文件,github并不会只把本地仓库中远程仓库没有的文件或后续更新上传。我们首先需要把远程仓库文件pull到本地。使用git pull命令即可。若出现问题可以尝试以下命令:

    git pull origin master --allow-unrelated-histories #这个命令会强制把远程库中不在本地的文件全部pull到本地
    

    接下来再使用git push即可,如果成功,打开github,会看到之前在本地但不在远程仓库中的文件已经被添加进了仓库中。

    一点备注:

    个人在VScode内使用github时,基本都是使用终端操作,只有commit和push可能会使用VScode内的按键而非终端命令。不过,VScode目前觉得唯一的优点在于可以很方便的看到仓库内版本状况,如文件在仓库内但还未追踪,或是更改后但尚未commit。

    以上就是目前为止的进度,关于github的使用暂时探索到这个程度。


    原本准备4月10号更的文章一直拖到现在才更,是由于之前毕业论文要求定稿了,又有两场考试突然通知,急急忙忙需要复习,今晚八点刚刚完成了考试,安排接下来的计划时,想起欠的这篇文章赶紧写掉。距离毕业只剩下答辩和一门通识课程了,接下里会安心学习编程和CFA,可以返校后也要拿到教材开始复习考研了。

    相关文章

      网友评论

          本文标题:OS环境下在VScode内使用github基础(二)建立与远程仓

          本文链接:https://www.haomeiwen.com/subject/anqughtx.html