本文目录结构:
- 本文适用场景
- 在GitHub创建仓库
- 设置ssh密匙
- 同步代码
1.本文适用场景:
- Windows 10
- 本地已经存在开发中项目 git-test,需要上传到远程仓库
- git 已经安装好
- 远程仓库这里使用GitHub
2.在GitHub创建仓库
个人头像下拉菜单中 打开 Your repositories,可以查看自己的仓库列表。
- 两种创建新仓库的方法:
①:在仓库列表页面点击New按钮可用创建新仓库。
②:在个人头像左边点击 New repository也可以创建新仓库
3.生成SSH Key(生成 公钥和私钥)
①:打开Git Bash,在这里使用命令 ssh-keygen -t rsa -C "邮箱地址"
命令详解如下:
ssh-keygen -t rsa -C “any comment can be here”
-t = 密钥的类型(The type of the key to generate) ,这里参数值是 rsa
-C = 用于识别这个密钥的注释 ,可以是任何内容(comment to identify the key)
虽然可以填写任何内容,但为了方便记忆,一般都填写邮箱。
②:选择密匙文件保存位置
会生成两个文件 id_rsa和id_rsa.pub
默认路径是:/c/Users/iskyl/.ssh/
其中iskyl是我的windows10 用户名。
如果默认就直接回车。
③:输入密匙密码,直接回车代表不设置。
如果电脑只可能你自己使用,那不设置操作更方便,不然每次提交都输入秘钥的密码,很烦人。
④:生成秘钥的地址
⑤:查看公钥的内容,这个需要复制,设置到github中。
4、将公钥设置到GitHub中
①:点击 头像的下拉菜单的Settings,进入设置页面
②:点击 New SSH Key,新增公钥
③:设置公钥,名字随便,当有多个时,能知道代表含义就可以。key中内容就是生成的id_rsa.pub内容完全复制过来的。
保存之后的列表显示:
④:验证公钥连接。
ssh -T git@github.com
连接成功,会生成known_hosts文件,并且将github.com连接的ip,通信公钥等内容加入到文件中。作为信任列表。
5. 上传本地代码。
以下步骤中有两部分可能你不会遇到,所有有些内容是因为环境,可以跳过,关键是知道原因,选择执行:
- git config --local设置email和name,如果之前电脑中使用设置过 git,或者设置过git config --global user.email或者name,就不会遇到步骤④的提示,也可以跳过设置。
- 如果远程github上面创建的仓库文件和本地文件不同,也就是没有冲突,也就可以顺利的git pull之后,顺利git push,完成同步。也不会遇到文件冲突,解决冲突。
- 在设置好ssh key,能通信后,其实以下各个步骤就是为了完成代码准备好后提交:先建立本地仓库(git init);添加文件,提交到本地仓库(git add 和git commit);提交到远程仓库(git remote add、git pull、git push)。
①:在需要上传的项目文件夹上面,右键打开Git Bash Here
②:建立项目git仓库 git init . (注意最后的点 .)执行后 项目目录下回新增 .git文件夹
③:添加文件到暂存区 git add -A . (同样注意最后的点 .)含义是当前文件夹的所有变化都提交到暂存区。
因为我的项目中有 .gitignore文件,设置了不需要提价的一些文件,所以会有 warning。
(注意:因为github上创建仓库时我选择了创建 .gitignore文件,所以会导致后续更新GitHub代码步骤的文件冲突,并且自动merge会失败,稍后说明解决办法。)
④:插播:设置提交时的 email和name,这个是显示的提交人,所有人可见,非账号(当然也可以设置为github账号邮箱)。
提示的是设置 global全局,但是我打算其他项目使用其他账号,比如公司内部的仓库提交记录显示工号姓名。所以我使用的是 git config --local (--local参数表明设置只对本目录项目生效)
查看设置结果 git config --list
⑤:提交到本地仓库
⑥:设置 remote :origin是名称,后面是git远程仓库地址,当前是ssh的.git地址
⑦:拉取远程仓库的代码到本地(先拉取代码、编辑冲突,然后才提交全部代码)
⑧:异常及解决方式:
- 异常1:fatal: refusing to merge unrelated histories,本地和远程仓库历史不一致。这个是因为上一步 git pull,不是使用的git clone,但是这里不能使用 git clone,解决方式是 git pull 后面加参数 --allow-unrelated-histories,完整命令:git pull origin master --allow-unrelated-histories
- 异常2:文件冲突
⑨:提交到远程仓库
⑩:查看GitHub提交记录
OVER!
推荐阅读:寻找我的iphone在哪里