美文网首页git及github学习Git&GitHubGitHub上有趣的资源
Git--第3章--向远程仓库(GitHub)提交代码

Git--第3章--向远程仓库(GitHub)提交代码

作者: 蓦然飞跃 | 来源:发表于2018-08-14 15:45 被阅读0次

           前面两章,我们已经讲述了Git的基本概念,以及在本地仓库上的一些基本操作。本章我们将学习如何在远程仓库上进行操作,在GitHub上提交我们的第一行代码。

    1. SSH

           SSH? 纳尼?没错,我第一次听到这个名词时,也是吓了一跳。此SSH非彼SSH,下面听我仔细说来。
      你拥有了一个 GitHub 账号之后,就可以自由的 clone 或者下载其他项目,也可以创建自己的项目,但是你没法提交代码。仔细想想也知道,肯定不可能随意就能提交代码的,如果随意可以提交代码,那么 GitHub 上的项目岂不乱了套了,所以提交代码之前一定是需要某种授权的,而 GitHub 上一般都是基于 SSH 授权的。
      那么什么是 SSH 呢? 简单点说,SSH是一种网络协议,用于计算机之间的加密登录。目前是每一台 Linux 电脑的标准配置。总结一下就是:SSH(Secure Shell)是一种加密的网络传输协议,常用于远程登陆与远程文件传输。使用SSH能有效避免数据在传输过程中被窃取篡改。SSH可以采用密码方式登陆远程,也可以使用公钥私钥自动登陆。而大多数 Git 服务器都会选择使用 SSH 公钥来进行授权,所以想要在 GitHub 提交代码的第一步就是要先添加 SSH key 配置。

    2. 生成SSH key

           Linux 与 Mac 都是默认安装了 SSH ,而 Windows 系统安装了 Git Bash 应该也是带了 SSH的。大家可以在终端(win下在 Git Bash 里)输入 ssh 如果出现以下提示证明你本机已经安装 SSH, 否则请搜索自行安装下。

    71.png
      紧接着输入 ssh-keygen -t rsa -C"邮箱",什么意思呢?就是指定 rsa 算法生成密钥。如果你出现下面的情况:
    72.png
      哥们别急,你没有看清我的命令,注意:ssh-keygen -t rsa -C"邮箱"的ssh和-key之间是没有空格的,要留心额!
      接着连续四个回车键(有人说三个,反正我是四个;不需要输入密码),然后就会生成两个文件 id_rsa 和 id_rsa.pub ,而 id_rsa 是密钥,id_rsa.pub 就是公钥。
    73.png
    这两文件默认分别在如下目录里生成:
    C:\Users\yucheng.HOME.ssh\id_rsa
    C:\Users\yucheng.HOME.ssh\id_rsa.pub
    当然下面的是我的电脑,你需要根据你的情况找: 74.png

      接下来要做的是把 id_rsa.pub 的内容添加到 GitHub 上,这样你本地的 id_rsa 密钥跟 GitHub上的 id_rsa.pub 公钥进行配对,授权成功才可以提交代码。

    3. GitHub 上添加 SSH key

    第一步:登录GitHub后,切换到setting页面:


    75.png

    第二步:点击最左侧 SSH and GPG keys :


    76.png

    第三步:点击右上角的 New SSH key 按钮:


    77.png
    79.png

    第四步:打开 id_rsa.pub文件:
    这里提醒下,怎么查看 id_rsa.pub 文件的内容?
    Linux/Mac 用户执行以下命令:
    cd ~/.ssh
    cat id_rsa.pub
    Windows用户,设置显示隐藏文件,可以使用 EditPlus 或者 Sublime 打开复制就行了。


    78.png
    80.png

    第五步:点击Add SSH Key,会进入下面界面:

    81.png
    第六步:确认密码(密码即你GitHub账户的密码),确认后会进入下面界面:
    82.png
    第七步:命令窗口输入 ssh -T git@github.com 进行测试:
    如果第一次进行此操作会出现下面的提示,直接输入yes:
    84.png
    若不是第一次操作,则会出现下面的界面,那么恭喜你,你已经添加成功了。
    83.png

    4. Push & Pull

    在提交代码之前我们先要了解两个命令,也是上次的文章没有介绍的,因为这两个命令需要跟远程仓库配合。
    Push :直译过来就是「推」的意思,什么意思呢?如果你本地代码有更新了,那么就需要把
    本地代码推到远程仓库,这样本地仓库跟远程仓库就可以保持同步了。
    代码示例:
    git push origin master
    意思就是把本地代码推到远程 master 分支。


    Pull:直译过来就是「拉」的意思,如果别人提交代码到远程仓库,这个时候你需要把远程仓库的最新代码拉下来,然后保证两端代码的同步。
    代码示例:
    git pull origin master
    意思就是把远程最新的代码更新到本地。一般我们在 push 之前都会先 pull ,这样不容易冲突。

    5. 提交代码

    添加 SSH key 成功之后,我们就有权限向 GitHub 上我们自己的项目提交代码了,而提交代码有两种方法:
    第一种情况:Clone自己的项目
      我们本地的项目是从远程仓库下载下来的,并时刻与其保持着同步更新,这样二者之间的差异不是很大,适合用下面的方式提交代码。
      Clone自己的项目 我们以我在 GitHub 上创建的 test 项目为例,执行如下命令:
    git clone git@github.com:stormzhang/test.git
    那么如何获取我们项目test在GitHub上的地址呢?

    85.png 命令窗口如下: 86.png 在你的文件下可以查看到你Clone的项目文件:
    87.png
      这样就把 test 项目 clone 到了本地,你可以把 clone 命令理解为高级点的复制,这个时候该项目本身就已经是一个git 仓库了,不需要执行 git init 进行初始化,而且甚至都已经关联好了远程仓库,我们只需要在这个 test 目录下任意修改或者添加文件,然后进行 commit ,之后就可以执行:
    git push origin master
    或者
    git push
    如下图所示:
    89.png
    进行代码提交,这种是最简单方便的一种方式。

    第二种方式:关联本地已有项目
      如果我们本地已经有一个完整的 git 仓库,并且已经进行了很多次 commit,这个时候第一种方法就不适合了。
      假设我们本地有个 test2 的项目,我们需要的是在 GitHub 上建一个 test3的项目,然后把本地test2 上的所有代码 commit 记录提交到 GitHub 上的 test3 项目。
    第一步:就是在 GitHub 上建一个 test3 项目,这个想必大家都会了,就不用多讲了。

    90.png 第二步:在本地仓库创建一个test2项目(并且假设我们的这个test2项目已经进行了很多次的commit操作) 92.png

    第三步:把本地 test2 项目与 GitHub 上的 test3 项目进行关联,切换到 test2 目录,执行如下命令:
    git remote add myorigin git@github.com:yucheng1994/test3.git
      什么意思呢?就是添加一个远程仓库,他的地址是git@github.com:yucheng1994/test3.git ,而 origin 是给这个项目的远程仓库起的名字,是的,名字你可以随便取,只不过大家公认的只有一个远程仓库时名字就是 origin ,为什么要给远程仓库取名字?因为我们可能一个项目有多个远程仓库?比如 GitHub 一个,比如公司一个,这样的话提交到不同的远程仓库就需要指定不同的仓库名字了。
    查看我们当前项目有哪些远程仓库可以执行如下命令:
    git remote -v
    接下来,我们本地的仓库就可以向远程仓库进行代码提交了:
    git push myorigin master
    就是默认向 GitHub 上的 test3 目录提交了代码,而这个代码是在 master 分支。当然你可以提交到指定的分支,这个之后的文章再详细讲解。

    93.png 然而从上图,我们可以发现,会有问题,会报错!
    那么到底是啥原因呢?又该如何解决呢?
    原因:远程仓库中含有本地仓库项目所没有的README.md文件
    解决方案:对项目进行合并,输入命令:git pull --rebase myorigin master
    详细操作请见Git--常见问题s--如何解决failed to push some refs to git

    解决上述问题之后,我们就可以成功的将本地的项目提交到远程仓库中了。


    96.png 97.png

    到这里你就成功的向远程仓库提交了代码!你会了吗

    6.总结

           通过本文的介绍,大家终于可以成功的向 GitHub 提交代码了,但是相信大家还有很多疑问,比如关于分支的理解与使用,比如 git 的其他一些有用的配置,比如怎么向一些开源项目贡献代码,发起 Pull Request 等,之后的系列文章会逐一进行介绍,敬请期待。

    相关文章

      网友评论

        本文标题:Git--第3章--向远程仓库(GitHub)提交代码

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