如果你已经在本地创建了一个Git仓库,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,那就需要用到SSH Key,github拿到了你的公钥就会知道内容是你推送的。
git本地仓库关联远程仓库(两种方法):
- 如果本地有一个版本库的话就不能用git clone了 可以切换到仓库目录,执行远程仓库关联命令。
- 如果本地没有仓库,可以git clone git@github.com:your name/repository name.git,然后切换到仓库目录,这时就不需要关联仓库了。
1、SSH Key的配置:
-
检查你的电脑中用户主目录中(C:\Users\Administrator\.ssh)是否有密匙对文件
id_rsa
和id_rsa.pub
-
没有的话,git bash中执行以下命令创建密匙对,按提示输入密码,可以不填密码一路回车 :
ssh-keygen -t rsa -b 4096 -C "你的git中设置的邮箱"
。 然后用户主目录/.ssh/下有两个文件,id_rsa
是私钥,id_rsa.pub
是公钥 -
检查你的ssh-agent是否是活跃的
eval "$(ssh-agent -s)"
-
将私匙添加到
ssh-add ~/.ssh/id_rsa
-
然后将公匙
id_rsa.pub
文件中的内容复制后添加到git网站中,如github登录GitHub,打开"SSH Keys"页面,快捷地址:github.com/settings/ss…
-
测试ssh key是否成功: git bash中测试是否能够连接
ssh -T git@github.com
如果出现You’ve successfully authenticated, but GitHub does not provide shell access
。这就表示已成功连上github。
2、将远程仓库的代码clone到本地仓库
从远程克隆一份到本地可以通过git clone
Git支持HTTPS和SSH协议,SSH速度更快
例如: git bash中执行 git clone git@github.com:xxxxx/yyy.git
然后切换到仓库目录,这时就不需要手动关联仓库了。
3、将本地的已有项目关联到github上的新的项目上
-
在github上创建新仓库(create new repository) 填入仓库名字(最好与本地项目仓库的名字一致,不能和已有仓库名字相同)、描述、权限)、选择初始化的时候是否创建README文件(Markdown格式)、是否添加gitignore文件、是否添加版权(一般是选 GNU General Public License 或者 Apache License,关于这两个协议,大家可以去网上搜一下),然后点击下面的 Create repository就完成了远程仓库创建
-
将本地仓库和远程仓库关联
$ echo # repository name>> README.md // 创建 README.md文件,并将# repository name 写入到文件
$ git init // 初始化一个本地Git仓库(把本地的文件夹初始化成一个Git可以管理的版本库)
注意:需让命令行终端处在当前文件目录下
$ git add README.md // 把文件添加到本地版本库
$ git commit -m "first commit" // 把文件修改提交到仓库
$ git remote add origin git@github.com:your name/repository name.git // 将本地仓库和你自己的远程仓库关联起来,origin是仓库的名字
$ git pull origin master // 先将关联后的github仓库中的代码pull下来,
$ git push -u origin master // 将最新的修改推送到远程仓库 将本地仓库的文件推送到远程仓库,可能你的本地项目关联着几个仓库,
你可以根据仓库的名字git push origin master 将代码提交到不同仓库中,可以指定分支,
第一次使用加上了-u参数,是推送内容并关联分支。
推送成功后就可以看到远程和本地的内容一模一样,下次只要本地作了提交,就可以通过命令:
$ git push origin master 把最新内容推送到Github上关联的远程仓库中去。
注意:
-
每次push前要先进行
git add 文件名
和git commit -m "注释"
。 -
在第一次进行push时,我们加上-u参数,后期push时就不用再加-u参数。
-
如果新建的远程库有文件(比如远程仓库里的LICENSE或者READ.ME文件),需要先 git pull ,但是会遇到
See git-pull(1) for details. git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> master
解决方法:在git pull origin master后面跟上参数--allow-unrelated-histories
git pull origin master --allow-unrelated-histories
远程仓库有更新的话需要先pull下来、然后再push