美文网首页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 等,之后的系列文章会逐一进行介绍,敬请期待。

相关文章

  • cocoapod添加仓库

    1、提交代码到github 1)在github添加远程仓库2)将本地代码提交到远程仓库git remote add...

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

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

  • github-webhook工具实现github自动构建

    原理 当本地git push origin master向Github远程仓库提交代码时,可以通过配置github...

  • git使用

    从本地git仓库向github仓库提交提交代码出错的解决办法 在使用git 对源代码进行push到gitHub时可...

  • github- 常用的git的命令记录

    commit ——提交至本地代码仓库,不会提交到远程仓库 push——将本地代码仓库的变动同步到远程仓库中

  • Git在实际开发中的应用

    一、向远程仓库第一次提交代码 二、更新代码 三、接手别人的代码,拉取远程仓库最新代码 EG:码云为例 !!!!! ...

  • 发布自己的cocoapods插件

    创建本地Git仓库,并提交代码 创建GitHub远端仓库,提交本地代码至GitHub仓库GitHub创建仓库.pn...

  • 通过Git将本地项目和远程仓库做关联

    添加远程代码仓库: git remote add origin 远程仓库地址 提交代码到远程仓库: git pus...

  • git

    添加远程仓库 从远程仓库克隆 将本地仓库内容提交github 从远程更新

  • js知识点7

    github将代码提交远程代码仓库 步骤: git add . 添加到缓存区 git status 查看文件状态 ...

网友评论

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

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