1 创建SSH Key
ssh-keygen -t rsa -C "youremail@example.com"
2 在GitHub端设置SSH Key
登录GitHub,点击右上角头像,Settings -> Personal settings -> SSH and GPG keys。在SSH Keys标签右方点击New SSH Key。
弹出两个文本框。其中的Title,可以随意命名。
另一个Key文本框,需要输入刚刚生成的id_rsa.pub文件中的内容。粘贴后点击Add SSH Key,即可生成SSH Key。
3 上传项目
笔者查阅资料,有网友得出总结,可以将git分为四部分:一部分是自己的本机文件,一部分是缓存区,一个是本地仓库,一个是服务器仓库。当用户在本机修改了文件后,就应该使用git add xx指令将修改保存到缓存区,然后再用git commit yy指令将推送从缓存区修改到本地仓库中,最后使用git push将本地仓库中的修改推送到服务器仓库中。
下面按照流程讲解。
3.1 准备上传
安装git
sudo apt-get install git
终端进入我们需要上传项目所在的文件夹,使用git的初始化命令:
git init
这个命令可以把当前目录变成git可以管理的仓库。现在我们就可以进行git操作将项目上传到GitHub了。
3.2 添加需要上传的文件
上传之前,我们需要添加上传的文件。这里使用到的指令是:
git add file
其中,file是我们想要添加的文件。这里笔者想要将整个文件夹内容都添加进去,所以此处笔者输入的指令如下:
git add ./
3.3 检查当前git状态
然后我们可以使用git指令,查看当前git的状态。指令如下:
git status
3.4 commit推送
笔者此处使用指令,将缓存区的修改提交到本地仓库。笔者的指令如下:
git commit -m "Update)"
-m后的内容是笔者添加的描述。由于笔者这次是更新该仓库,更新内容是中文与英文的Readme文件,所以就写了上述的备注。
如果输入commit指令后,出现错误:
** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'XXX@YYY.(none)')
这时候的解决办法是,在进行git add ./操作的路径中,实际上已经生成了一个隐藏的.git文件夹。在该路径下输入指令cd ./.git便进入.git文件夹,使用gedit或vim打开文件config,在文件末尾加入内容:
[user]
email = your email
name = your name
里面的your email, your name随便填上就行,笔者是直接填的GitHub账号中的Email和用户名。这时候再进行commit指令,应该就可以成功了。完成后就可以等待提交了。
3.5 添加文件到远程库
构建仓库结束后,我们需要得到该仓库的SSH Key才能向其中上传内容。进入刚才新建的仓库,点击Clone or download,在弹出的Clone with SSH框中点击小按钮Copy to clipboard。
首先我们应该添加一个远程仓库,命名为origin,这样随后才可以添加文件到远程库中。指令如下:
git remote add origin URL
如果此时出现错误:fatal: remote origin already exists. 这时候说明远程仓库已经存在。这时候需要先删除origin仓库,然后再重新添加该远程仓库。指令如下:
git remote rm origin
git remote add origin URL
这时候应该就应该不会报错了。然后我们添加文件到远程库。笔者使用的指令如下:
git remote set-url origin url
然后,笔者使用push指令进行上传。如果该仓库是第一次进行push,则指令如下:
git push origin master
之后会弹出问题,询问是否继续?输入yes回车即可,完成。
若报错
$ git push -u origin master
To git@github.com:yangchao0718/cocos2d.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:yangchao0718/cocos2d.git
hint: Updates were rejected because the tip of your current branch is behin
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
出现错误的主要原因是github中的README.md文件不在本地代码目录中,可以通过如下命令进行代码合并
git pull --rebase origin master
若报错:
The authenticity of host 'github.com (13.229.188.59)' can't be established.
原因是本地仓库和远程的SSH不匹配,则
ls -al ~/.ssh
ssh-keygen -t rsa -C "github user name"
cat ~/.ssh/id_rsa.pub
登陆github,点击头像-settings-new SSH,复制新生成的SSH.