今天折腾了一下午关于git上传代码至github的操作,过程中遇到了些许问题,可能对其他同志也有些帮助,特此记录一下。
Git安装及配置
安装的过程比较简单,不具体赘述,可以直接参考以下链接:Git安装与配置
提交代码至github
git安装完成后,可针对全局设置本地机器默认的username和user.email.这部分上面的链接也有提及,一般帐户和邮箱都设置github的帐户和邮箱,如果你有其他的帐户的话,再另外添加;
设置完成,就准备开始把本地的项目上传到github中,我选择的是用ssh url的方式上传。具体步骤如下:
1、检查电脑是否已经有ssh key:
运行cmd或者git bash,输入以下指令:
cd ~/.ssh
注意:.ssh是隐藏文件,如果找不到对应的路径的话,可以先将隐藏的文件显示。
如果成功进入的话,再键入 ls
列出文件夹中的文件,看是否存在id_rsa.pub或id_dsa.pub文件;有的话可直接跳过步骤2。
2、创建一个SSH key
ssh-keygen -t rsa -C "yourmail@example.com"
-t 指定密钥类型,默认是rsa;
-C 设置注释文字,比如邮箱;
-f 指定密钥文件储存文件名
上面的指令忽略了-f指令,因此运行后会让你输入一个文件名,用于保存刚生成的SSH key代码:
Generating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]
直接回车的话,就是使用默认的文件名(推荐),那么就会生成 id_rsa 和 id_ras.hub 两个密钥文件;
然后会要你输入并确认密码(是push文件时输入的密码,不是github的密码)
Enter passphrase (empty for no passphrase):
# Enter same passphrase again:
不输密码直接回车的话,后续push的时候就不需要输入密码,可以直接提交至github上;
接着,会有以下代码提示:
Your identification has been saved in /c/Users/you/.ssh/id_rsa.
# Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
这时,ssh key就创建完成了,然后就添加到github上去吧。
3、将ssh key添加至github
a、首先,将id_rsa.pub里的内容全部复制。可以用编辑器直接打开该文件。该文件路径上面已经有提醒:
Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
或者直接使用git指令复制文本的内容:
clip < ~/.ssh/id_rsa.pub
b、登录github,进入个人中心的setting-SSH and GPG keys中,点击new ssh key;
c、点开后需要输入title 和 key ,title的话是一个标识,以便自己区分,默认是你的邮件名称。在key的编辑区域将刚刚复制的内容全部粘贴上,注意开头不要有空格。
4、测试该ssh key
在cmd或git bash中输入以下代码:
ssh -T git@github.com
随后会弹出一段警告代码:
The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?
这是正常的,输入yes回车即可,如果你前面设置了密码,那么他会让你输入密码:
Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':
密码正确后会看到以下一段代码:
Hi Jasongzj! You've successfully authenticated, but GitHub does not provide shell access.
到这里,连接github也完成了。
第一次提交代码
1、在github上新建一个Repository,完成后复制这个Repository的ssh链接
2、建立本地仓库
建立了连接以后,就可以开始将本地项目上传到github中了。同样打开cmd或git bash,然后cd到项目的根目录,键入:git init
初始化该文件夹,随后会有以下提示:
Initialized empty Git repository in /example-project-path/.git/
然后键入touch README
创建一个README.md文件。
3、添加并提交文件到本地仓库
git add . /*添加目录所有文件*/
git commit -m "first commit" /*引号内为注释的内容*/
在add 的过程,可能会出现以下报错:
warning: LF will be replaced by CRLF
是因为windows中的换行符为 CRLF, 而在Linux下的换行符为LF,所以在执行add . 时出现提示;
解决办法如下:
rm -rf .git // 删除.git
git config --global core.autocrlf false //禁用自动转换
git init //再重新执行
git add .
另外再额外延伸一些知识点:Git工作流和查看文件状态
4、将提交到头的信息上传至github
git remote add origin git@github.com:gbyukg/zf-tutorial.git /*(若是第一次提交该项目的文件或是修改项目文件名后则需要这行这个命令,以后就可不用执行该命令)*/
git push -u origin master
在这里,我自己遇到了一些问题,当我运行最后一条指令后,返回了以下结果:failed to push some refs to git
。有人提出是本地仓库中没有github上的README文件,因此可以执行以下操作:git pull --rebase origin master
,将github中的README文件合并到本地,再重新git push -u origin master
。但这个方法对我并不适用。
因为我的github上是没有文件的,因此我采用以下方法,将-u 改为 -f 强制本地文件覆盖了repository里的文件。
git push -f origin master