对于程序原来说都听说过GitHub,GitHub有许多开源的的项目和一些前沿的技术。因为自己在刚刚开始使用Git把自己写的一些小dome放到GitHub上遇到许多的坑,这么长时间过去了,想对第一次使用Git上传代码做一下总结,以免使自己忘记。
一.下载安装Git软件、完成用户注册、检查密钥是否存在
1.1下载Git软件:https://git-scm.com/downloads,据说ios自带的有git软件,这个我就不太清楚了。
我下载的是2.22.0 Release Notes版本
1. 2.下载之后安装就很简单了,一路下一步就可以了。安装完成后鼠标右击和者开始->程序会出现,打开Git Bash,进入bash界面。
接下来是重点,**若这一步没有通过的话;秘钥没有认证完成,就不能上传文件,**这个已经踩坑了,一直英语提示tell who are you ;
1.3.邮箱注册
在git bash界面输入如下内容即可完成邮箱的注册:
$ git config --global user.name "user.name"
(说明:双引号中需要你的用户名,这个可以随便输入,比如“zhangsan”)
$ git config --global user.email "yourmail@youremail.com.cn"
(说明: 双引号中需要输入你的有效邮箱,比如“12131312@qq.com”)
1.4.查看是否存在密钥ssh keys
若出现“No such file or directory”,则表示需要创建一个ssh keys。
我的秘钥已经设置过,如下面的状态:
1.5.如果没设置,就创建新的ssh keys,不然git不能上传文件
$ssh-keygen -t rsa -C "你的邮箱名"
$指定目录: C:\deskbook\(说明:若在此处不输入路径,而直接按回车,则ssh keys生成后存放的路径为C:\User.ssh)我的默认存放路径是C:\Users*.ssh**,我指定的目录是D:\MySoftware\github\Git\id_rsa* 但是在后面使用公钥的时候,貌似只能识别C:\用户\fhj\下的.ssh*,所以我又将指定目录下的两个文件id_rsa、id_rsa.pub拷贝到了C:\用户\fhj\.ssh
$输入密码: 123456
$确认密码: 123456
如此即可在C:\deskbook\文件夹中生成ssh keys。包括两个文件rd_rsa和id_rsa.pub
然后找到rd_rsa和id_rsa.pub所在目录打开idb_rsa.pub(可以把后缀名改成.txt),登录自己的GitHub账号,找到Settings,
进入Settings后,点击SSH and GPG keys,然后再点击右上角添加新密钥按钮New SSH key,
然后,将idb_rsa.pub里的内容拷贝到Key内,Title内容随便填,确定即可。
如填写 title 为rsa
二.开始上传本地文件到git上。
2.1我们需要先创建一个本地的版本库(其实也就是一个文件夹)。你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建。
现在我通过命令行在桌面新建一个testapp文件夹(你也可以在其他任何地方创建这个文件夹),并且进入这个文件夹
这时桌面上就会出现一个文件夹,你可以将你的项目代码拷贝进来
2.2.通过命令git init把这个文件夹变成Git可管理的仓库
这时你会发现TEST里面多了个.git文件夹,它是Git用来跟踪和管理版本库的。如果你看不到,是因为它默认是隐藏文件,那你就需要设置一下让隐藏文件可见。
2.3.这时候你就可以把你的项目粘贴到这个本地Git仓库里面(粘贴后你可以通过git status来查看你当前的状态),然后通过git add把项目添加到仓库(或git add .把该目录下的所有文件添加到仓库,注意点是用空格隔开的)。在这个过程中你其实可以一直使用git status来查看你当前的状态。如果文件内有东西会出现红色的字,不是绿色,这不是错误。
这里提示你虽然把项目粘贴过来了,但还没有add到Git仓库上,然后我们通过git add .把刚才复制过来的项目全部添加到仓库上。
2.4.用git commit -m “注释” 把项目提交到仓库。
这个注释其实就是你github上的中间一栏,所以写什么内容都随你
三.连接远程仓库(也就是连接Github)
3.1.由于本地Git仓库和Github仓库之间的传输是通过SSH加密的,所以连接时需要设置一下:
先创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录,有的话看下里面有没有id_rsa和id_rsa.pub这两个文件,有就跳到下一步,没有就通过下面命令创建
$ ssh-keygen -t rsa -C "youremail@example.com"
然后一路回车。创建成功后会显示这样:
这时你就会在用户下的.ssh目录里找到id_rsa和id_rsa.pub这两个文件。但是这个文件刚创建的时候是没有known_hosts文件的,而我这里有是因为我提交成功后生成的。
同时你要给你的github上添加密钥
3.2创建Github远程仓库
Github上创建一个Git仓库。
你可以直接点New repository来创建,比如我创建了一个tes2t的仓库。
上面我没有默认勾选Initialize this repository with a README,勾选和不勾选创建的结果区别如下:
下边这个是勾选的
3.3:在Github上创建好Git仓库之后我们就可以和本地仓库进行关联了,根据创建好的Git仓库页面的提示,可以在本地仓库的命令行输入:
$ git remote add origin git@github.com:CharlesTian07/test2.git
一定要记得$ git remote add origin git@github.com:这部分命令是固定的,但是后面的是你的github账户昵称和你创建的项目名称。上面的只是举个例子,实际上要怎么找到这两个信息,看下图:
附(特殊说明):
这是第一次上传至github上,且github上是空的情况下,如果github上不是空的,那么你在本地修改代码之后要更新至github上时(第一次需先连接远程仓库git remote add origin git@github.com),这时 你可以使用命令:git status查询你的文件有哪些修改了(修改的文件显示为红色),然后输入命令git add ./,意思是把修改的文件提交上去,这时再git status会发现修改的文件是绿色的,最后再git commit -m "你的注释"即可上传上去。
若是想在另外一台电脑同步的话,那么输入命令git pull git@github.com即可(第一次需先连接远程仓库git remote add origin git@github.com)。
但是第一次pull或者上传的时候会出现以下问题,如图:
意思很明显,因为你是第一次,所以远程仓库并不知道你是谁,即使组长已经将你添加进开发组中,这时你需要先表明你的身份是否在开发组中, 接下来根据提示的步骤来:
①git config --global user.email "youraddress@company.com"
②git config --global user.name “yourname”
表明之后再提交即可,即:git commit -m “your comment”
3.4:关联好之后我们就可以把本地库的所有内容推送到远程仓库(也就是Github)上了,通过:
$ git push -u origin master
由于新建的远程仓库是空的(未勾选3.2步的Initialize this repository with a README),所以要加上-u这个参数。
若勾选了
Initialize this repository with a README(就是创建仓库的时候自动给你创建一个README文件),那么到了第3.4步你将本地仓库内容推送到远程仓库的时候就会报一个to https://github.com/sdc123456789/xiaobin的错
这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下:
$ git pull --rebase origin master
这时你再push就能成功了
如果上述操作之后还是会报错,那么可能有以下几个原因:
原因:1.github上没有与本地仓库相关联(重新remote)
2.ssh不对(多数情况)
ssh解决:
-
cat ~/.ssh/id_rsa.pub 查看ssh是否是自己的,不是说明是ssh问题,是的就是远程关联问题
-
如果是ssh问题则在git仓库同目录 删除.ssh文件夹 (隐藏文件夹)
判断删除成功: cat ~/.ssh/id_rsa.pub
出现cat: /c/Users/ZhangLin/.ssh/id_rsa.pub: No such file or directory
3.重新创建ssh ssh-keygen -t rsa -C "your_email@example.com“
一路回车
4.在ssh文件夹下pub文件中的内容复制 github上新建一个ssh链接
最后上传完毕之后,进去GitHub battleEnglish这个仓库刷新下就会有已经上传的文件夹了。

附:1、我在remote远端仓库时,出现origin already exists
解决办法 git remote rm origin
2、permission denied(publickey)
密钥要默认在c盘,用户名和邮箱都输对
3、这里有个坑需要注意一下,就是在上面第3.2步创建远程仓库的时候,如果你勾选了Initialize this repository with a README(就是创建仓库的时候自动给你创建一个README文件),那么到了第3.4步你将本地仓库内容推送到远程仓库的时候就会报一个to https://github.com/sdc123456789/xiaobin的错
这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下:
$ git pull --rebase origin master
这时你再push就能成功了。
原文:https://blog.youkuaiyun.com/charles_tian/article/details/80842439
https://www.cnblogs.com/sdcs/p/8270029.html