GitHub使用部分--本地库和远程库之间的同步
将本地库添加到远程库(git)
前提条件
首先需要一个本地文件夹mkdir 文件名—>git init 本地库初始化 —>添加文件到本地库git add 文件名(创建这个文件在本地库目录下)—>同步到本地库git commit -m “注释”
1.先在GitHub上创建一个远程库
①登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:
②在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
2.cd到本地库地址上,通过命令行将本地库同步到远程库
$ git remote add origin git@github.com:github账户名/learngit.git
3.把本地库的所有内容推送到远程库上
git push -u origin master
注意:第一次推送master分支时,需要加上-u参数,可以将本地的master分支推送到远程master上,并且实现两者的同步,以后就不需要这个参数了:$ git push origin master
SSH警告
当第一次使用GIT的clone货push命令连接Github时会得到一个警告
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
输入yes 回车即可
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
git遇到的问题之“Please make sure you have the correct access rights and the repository exists.”
这个是因为ssh key有问题,链接不上服务器
解决步骤:
1、首先我得重新在git设置一下身份的名字和邮箱(因为当初都忘了设置啥了,因为遇到坑了)进入到需要提交的文件夹底下(因为直接打开git Bash,在没有路径的情况下,根本没!法!改!刚使用git时遇到的坑。。。)
git config --global user.name “yourname”
git config --global user.email“your@email"
注:yourname是你要设置的名字,your@email是你要设置的邮箱。
2、删除.ssh文件夹(直接搜索该文件夹)下的known_hosts(手动删除即可,不需要git)
注意:.ssh是隐藏文件需要通过命令行获取地址后 通过前往得到
3、git输入命令
$ ssh-keygen -t rsa -C "邮箱"(请填你设置的邮箱地址)
接着出现:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):
请直接按下回车
然后系统会自动在.ssh文件夹下生成两个文件,id_rsa和id_rsa.pub,用记事本打开id_rsa.pub
将全部的内容复制
4、打开https://github.com/,登陆你的账户,进入设置
进入ssh设置
粘贴复制即可
最后在命令行中输入ssh -T git@github.com
若显示下面文字代表成功了
You've successfully authenticated, but GitHub does not provide shell access.
注意:有时候修改本地库内容后,通过git push origin master发现远程库没有改动,这是因为你只是修改了工作区的内容,并没有改变本地库的内容。解决步骤:git add 文件 存放到缓存区,git commit -m “注释”(更新到本地库中)
问题:push出错
$ git push -u origin master
To git@github.com:******/Demo.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:******/Demo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
原因:是因为远程repository和我本地的repository冲突导致的,而我在创建版本库后,在github的版本库页面点击了创建README.md文件的按钮创建了说明文档,但是却没有pull到本地。这样就产生了版本冲突的问题。
解决办法:
方法1.强制push git push -u origin master -f
方法2. ①push 前将远程repository修改pull下来 git pull origin master —>git push -u origin master
方法3.若不想merge(合并)远程和本地修改,可以先创建新的分支
git branch [分支名]
git push -u origin [分支名]
最后提醒:在远程建立库时要注意和本地库文件进行统一,如果本地库没有README.md文件,创建时就不需要初始化文件,也可以通过以上方法解决。
从远程库克隆岛本地
现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
首先,登陆GitHub,创建一个新的仓库,名字叫gitskills:
现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:
$ git clone git@github.com:github账户名/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
$ cd gitskills
$ ls
README.md
git 支持多种协议,包括https,但通过ssh支持的原生git协议速度更快