Git(三)Git的远程仓库
一. 添加远程库
现在我们已经在本地创建了一个Git仓库,又想让其他人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份。常用的远程仓库就是github:https://github.com/,接下来我们演示如何将本地代码同步到github。
1.在github上创建仓库
首先你得在github上创建一个账号,然后在github上创建一个仓库:
点击“create repository”按钮仓库就创建成功了。
Github支持两种同步方式“https”和“ssh”。如果使用https很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。而且如果是公司配置的私有git服务器一般不提供https方式访问,所以我们着重说“ssh”方式。
2. ssh协议
1. 什么是ssh?
SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
2. ssh密钥生成
在windows下我们可以使用 Git Bash.exe来生成密钥,可以通过开始菜单或者右键菜单打开Git Bash,git bash 执行命令,生命公钥和私钥,命令: ssh-keygen -t rsa
执行命令完成后,在window本地用户.ssh目录C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥:
3. ssh密钥配置
密钥生成后需要在github上配置密钥本地才可以顺利访问。
使用文本编辑器打开刚刚生成的公钥(id_rsa.pub),在key部分将id_rsa.pub文件内容添加进去,然后点击“Add SSH key”按钮完成配置。
3. 同步到远程仓库
1) 使用git bash
在仓库所在的目录(D:\Develop\Git\git)点击右键选择“Git Bash Here”,启动git bash程序。
然后在git bash中执行如下语句(参考创建仓库界面命令):
git remote add origin git@github.com:dengtianxiang/BigData.git
git push -u origin master
注意:其中红色字体部分需要替换成个人的用户名。
2)使用TortoiseGit同步
同步。在本地仓库的文件夹中单击右键,选择“Git同步”
点击推送
二. 从远程仓库克隆
克隆远程仓库也就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。选择一个任意部署仓库的目录,然后克隆远程仓库。
1.使用git bash
$ git clone git@github.com:dengtianxiang/BigData.git
2. 使用TortoiseGit
在任意目录点击右键:
三. 从远程仓库取代码
Git中从远程的分支获取最新的版本到本地有这样2个命令:
- git fetch:相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
- git pull:相当于是从远程获取最新版本并merge到本地
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。
如果使用TortoiseGit的话可以从右键菜单中点击“拉取”(pull)或者“获取”(fetch)
四. 搭建私有Git服务器
1. 服务器搭建
远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。
Git下载地址:https://mirrors.edge.kernel.org/pub/software/scm/git/
搭建Git服务器需要准备一台运行Linux的机器,在此我们使用CentOS。以下为安装步骤:
1、安装git服务环境准备
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc
2、下载git-2.9.5.tar.gz
1)tar -zxf git-2.9.5.tar.gz
2)cd git-2.9.5
3)autoconf
4)./configure
5)make
6)make install
3、添加用户
useradd git
4、设置/home/git文件夹操作权限
chown git:git /home/git
5、设置密码
passwd git
输入两次密码,密码为git
6、切换到git用户
su git
7、创建git仓库
git --bare init /home/git/mygit
注意:如果不使用“--bare”参数,初始化仓库后,提交master分支时报错。这是由于git默认拒绝了push操作,需要.git/config添加如下代码:
[receive]
denyCurrentBranch = ignore
推荐使用:git --bare init初始化仓库。
2. 连接服务器
私有git服务器搭建完成后就可以向连接github一样连接使用了,但是我们的git服务器并没有配置密钥登录,所以每次连接时需要输入密码。
使用命令连接:
$ git remote add origin ssh://git@192.168.100.21/home/git/mygit
同步
$ git push -u origin master
这种形式和刚才使用的形式好像不一样,前面有ssh://前缀,也可以这样写:
$ git remote add origin git@192.168.100.21:first
使用TortoiseGit同步的话参考上面的使用方法。