原创作者stormzhang,个人博客:http://stormzhang.com
以下是我的理解:
GitHub一般都是基于SSH授权的,SSH是一种网络协议,用于计算机之间的加密登录。目前是每一台 Linux 电脑的标准配置。而大多数 Git 服务器都会选择使用 SSH 公钥来进行授权,所以想要在 GitHub 提交代码的第一步就是要先添加 SSH key 配置。
生成SSH
在window下 安装GitBash也是带了SSH的 在GitBash里面输入ssh:
紧接着输入 ssh-keygen -t rsa ,什么意思呢?就是指定 rsa 算法生成密钥,接着连续三个回车键(不需要输入密码),然后就会生成两个文件 id_rsa 和 id_rsa.pub ,而 id_rsa 是密钥,id_rsa.pub 就是公钥。这两文件生成的默认目录也会有提示,我的是C:\Users\Administrator\.ssh,原文说是隐藏的文件,但我这并没有隐藏
在GitHub上添加SSH key 跟原文一样
SSH key 添加成功之后,输入 ssh -T git@github.com 进行测试:
在后面直接写yes(我也不知道原因,凭感觉)
下面就直接来说提交代码了:
讲到这,这里有两种提交代码的方式
第一种是新建一个文件夹,然后Git Bash定位到这个文件夹,然后执行如下命令:
git clone https://github.com/wk1995/test.git
后面的那串叫做仓库地址 获取的方法:
执行那串命令后,这仓库就保存到那个文件夹里面了。然后再定位到保存的那个仓库,例如这个例子的test,定位到该文件下的test,因为新建的文件夹并不是个仓库,而保存的那个文件夹才是,
这样就把 test 项目 clone 到了本地,你可以把 clone 命令理解为高级点的复制,这个时候该项目本身就已经是一个git 仓库了,不需要执行 git init 进行初始化,而且甚至都已经关联好了远程仓库,执行完之后就可以发现新建的文件夹下有个test文件夹,然后再这个test文件夹下修改,增加,删除
把修改后的文件git add 后,再git commit
然后再上传,执行如下命令:
git push origin master
这里的origin 是给这个项目的远程仓库起的名字,这个名字你可以随便取,只不过大家公认的只有一个远程仓库时名字就是 origin ,为什么要给远程仓库取名字?因为我们可能一个项目有多个远程仓库?比如 GitHub 一个,比如公司一个,这样的话提交到不同的远程仓库就需要指定不同的仓库名字了。
我当时就是没有切换到新建文件加下的test文件夹,导致一直都是失败。
如果我们本地已经有一个完整的 git 仓库,并且已经进行了很多次 commit,这个时候第一种方法就不适合了。这时候就要用第二种方法了
第一步就是在 GitHub 上建一个 wk 项目,这里得注意,建这个wk项目的时候,按默认的来就行,不用勾什么,只要写好项目名就行了,否则执行下面的步骤的时候就会出现
第二步把本地 wk项目与 GitHub 上的 wk项目进行关联,切换到 wk目录,执行如下命
令:
查看我们当前项目有哪些远程仓库可以执行如下命令:
git remote -v
接下来,我们本地的仓库就可以向远程仓库进行代码提交了:
git push origin master
就是默认向 GitHub 上的 wk目录提交了代码,而这个代码是在 master 分支。当然你可以提交到指定的分支。但这里注意的是,因为是本地首次传到远程仓库,并不需要执行
git pull origin master 这代码
这样就传上去了,可以到网站去看看有没有新添加进文件
值得注意的是,把本地wk项目里面的文件删了,重新新建一个文件,依次执行 rm ,add ,commit,pull ,push,那远程仓库会与之同步(每步后用git status 执行看看状态,在push 前面先执行pull,一样的效果,建议用pull)