折腾了将近两个小时终于解决了OS下 git 上传文件到 github的问题,从头记录下来,为有同样问题的新手提供参考。
如果已经配置过,只想看常用指令,可以直接从第三部分开始看。
1、建立Github仓库
首先在github建立一个仓库,这个教程很多,步骤说明也比较详细,跟着做就好。注意勾选创建README文件,不然上传文件可能报错。
2、在本地克隆仓库
先从github上下载命令行工具(git)。https://git-scm.com/download/mac
注意:安装完如果没看到任何图标别担心,因为它不是普通的应用。设置SSH密钥
我们使用SSH实现客户端跟github的加密通讯。
为了确保你创建了一个新的密钥,你需要先确定一下原来是不是已经有了一个密钥。首先,打开终端(terminal),一般在Application-->Utilities中
a. 检查ssh密钥 (如果已经有了密钥,那可以跳到第四步)
b. 首先,我们需要检查电脑上是否已经有了ssh密钥:
cd ~/.ssh
如果提示“没有该文件或文件夹”( “No such file or directory“ )跳到第三步,否则继续
c.备份并移除原来的SSH密钥
因为已经有了ssh密钥的相关文件夹,所以你需要将他们备份一下并删除掉
ls #显示当前文件夹下所有文件和文件夹config id_rsa id_rsa.pub known_hosts mkdir key_backup #在当前目录下创建一个叫"key_backup"的文件夹 cp id_rsa* key_backup #复制id_rsa和id_rsa.pub到key_backup里头 rm id_rsa*
d.创建一个新的SSH密钥
输入以下命令创建一个新的SSH密钥。由于我们直接使用默认设置,所以当问及保存密钥的位置时,直接按回车。
ssh-keygen -t rsa -C "your_email@youremail.com" #使用你提供的邮件地址创建一个新的SSH密钥Generating public/private rsa key pair.Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):<press enter>
接下来输入密码
Enter passphrase (empty for no passphrase):<enter a passphrase>
Enter same passphrase again:<enter passphrase again>
回车,正确的话应该显示如下:
Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa.Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub.The key fingerprint is:01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db user_name@username.comThe key's randomart image is:+--[ RSA 2048]----+| .+ + || = o O . || = * * || o = + || o S . || o o = || o . E || || |+-----------------+
e. 将你的SSH密钥添加到github上
e.1 在github网站上点击“Account Settings”* > Click “SSH Keys” > Click “Add SSH key”*
用文本编辑器打开id_rsa.pub文件(译者注:直接在命令行中用vi打开最简单)。这个文件是你的公钥,你需要打开“浏览隐藏文件”去招到它,因为.ssh文件夹是隐藏的。需要小心的是,当你从文件中拷贝密钥时一定要注意密钥文件是不包含任何空白或者换行符的,这一点非常重要(译者注:所以你拷贝的时候注意不要把多余的行或者空格拷贝进去)
接下来将密钥黏贴进key的文本框中
点击Add Key
e.2 测试一切是否顺利 为了确保一切正常运行,你需要尝试下SSH登陆到github。注意,不需要改变以下命令中"git@github.com"部分。
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"
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
接下来,设置你的信息
现在你已经设置好git并且将你的SSH密钥输入到github上了,接下来轮到设置你的个人信息了
a. 设置你的用户名和邮箱
git会依旧用户名和邮箱跟踪是谁做的提交。并且,我们使用这些信息去关联你的提交和github的账户。输入以下命令,讲name和email替换成你的名字和邮箱。名字需要是你的真实名字而不是你的github账户。
b. $ git config --global user.name "Firstname Lastname" #为你的机器上所有的git实例设置用户名$ git config --global user.email "your_email@youremail.com" #为你的机器上所有的git实例设置用户的邮箱
设置好SSH密钥后,可以进行clone库:
git clone https://github.com/findingsea/myRepoForBlog.git
上面的地址在你的Github页面可以找到:
clone成功如下:
Cloning into 'myRepoForBlog'...
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
3、上传文件
push文件
在终端cd打开要上传的文件所在文件夹
git add .
git commit -m 'first_commit'
git remote add origin https://github.com/findingsea/myRepoForBlog.git
git push origin master
如果执行git remote add origin https://github.com/findingsea/myRepoForBlog.git,出现错误:
fatal: remote origin already exists
则执行以下语句:
git remote rm origin
再往后执行git remote add origin https://github.com/findingsea/myRepoForBlog.git 即可。
如果在执行git push origin master时,报错:
error:failed to push som refs to.......
则执行以下语句:
git pull origin master