续我的上篇博文:https://mp.csdn.net/postedit/89007750。即Git本地仓库已经搭建好
在实验之前,先进行设置,使得虚拟机可以上网
##物理机
[root@foundation83 Desktop]# iptables -t nat -I POSTROUTING -s 172.25.83.0/24 -j MASQUERADE
##server1
[root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.25.83.1
PREFIX=24
GATEWAY=172.25.83.83 #设置网关地址
DNS1=114.114.114.114 #设置DNS域名解析
[root@server1 ~]# ping www.baidu.com #测试网络是否ok
PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=1 ttl=50 time=23.0 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=2 ttl=50 time=23.7 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=3 ttl=50 time=35.0 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 23.070/27.307/35.090/5.513 ms
Git本地仓库与Github远程仓库关联
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
1、首先,注册一个GitHub的帐号,登陆GitHub,然后,在右上角的“+“号下找到“New repository”按钮,创建一个新的仓库:
2、在Repository name填入demo
(这里创建的仓库的名字为demo,该名字可以随意给),其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
点击右上角"+"下的"settings",进入“设置SSH Keys“的界面。
3、添加SSH keys:在Tiltle处填入server1
(该名字随意给);在Key处填入生成的公钥id_rsa.pub的内容
[root@server1 ~]# ssh-keygen
[root@server1 ~]# cd .ssh/
[root@server1 .ssh]# ls
id_rsa id_rsa.pub
[root@server1 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+5MWBGK2WOkU+hMLkSNWJOaCj1rFefr31PLWIgoZLIpbmGiUJW79TA0uEnKGWAxFNT2JDF+0Pb+6k+KsEf8esg9mV33vF4hzXycUvVcyMx8rDYLFvkqyWopqgkW+MM2YX0VGM0BWo/n2McVVZbahCXic8Id81N+pnOp8RSW1B2Un1k9NQLQOGz+tOQ5mdHgvxeO46z1l0vNdryfIXNQsQs5EJG4ux8KHTzEhwhs2k1JBZ4F8UZ161UFBAV2O/fM0YJGHdSy2G+iPy9/RP7ZX0WvZgqM8p8+Bj+4U7lk+eX+I4ILtWWNHjIHnDLm9d+P63dy1jNIrL5+ZqWiMpOh9z root@server1
4、目前,在GitHub上的这个demo
仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的demo
仓库下运行命令:
[root@server1 demo]# pwd
/root/demo
[root@server1 demo]# ls
file1
[root@server1 demo]# git remote add origin git@github.com:Cinjosy/demo.git #必须在demo目录(本地仓库目录)下执行命令
请千万注意,把上面的Cinjosy
替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。
添加后,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
[root@server1 demo]# git remote -v #查看关联的所有的远程仓储名称及地址。必须在demo目录(本地仓库目录)下执行命令
origin git@github.com:Cinjosy/demo.git (fetch)
origin git@github.com:Cinjosy/demo.git (push)
[root@server1 demo]# git remote #查看所有的远程仓储名称。#必须在demo目录(本地仓库目录)下执行命令
origin
下一步,就可以把本地库的所有内容推送到远程库上:
[root@server1 demo]# git push -u origin master #必须在demo目录(本地仓库目录)下执行命令
The authenticity of host 'github.com (52.74.223.119)' 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 #输入yes
Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts.
Counting objects: 3, done.
Writing objects: 100% (3/3), 196 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:Cinjosy/demo.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:
点击file1
从现在起,只要本地作了提交,就可以通过命令:
git push -u origin master
把本地master
分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!
[root@server1 demo]# pwd
/root/demo
[root@server1 demo]# ls
file1 git
[root@server1 demo]# echo redhat linux > file2 #必须在demo目录(本地仓库目录)下执行命令
[root@server1 demo]# cat file2
redhat linux
[root@server1 demo]# git add file2 #必须在demo目录(本地仓库目录)下执行命令
[root@server1 demo]# git commit -m "add file2" #必须在demo目录(本地仓库目录)下执行命令
[master 5a8a3d5] add file2
1 file changed, 1 insertion(+)
create mode 100644 file2
[root@server1 demo]# git push -u origin master #必须在demo目录(本地仓库目录)下执行命令
Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 264 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:Cinjosy/demo.git
d81d6af..5a8a3d5 master -> master
Branch master set up to track remote branch master from origin.
点击file2
小结
要关联一个远程库,使用命令
git remote add origin git@server-name:path/repo-name.git
;关联后,使用命令
git push -u origin master
第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令
git push -u origin master
推送最新修改;分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!