Git(三)Git的远程仓库

时间:2021-05-08 05:45:01

一. 添加远程库

现在我们已经在本地创建了一个Git仓库,又想让其他人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份。常用的远程仓库就是github:https://github.com/,接下来我们演示如何将本地代码同步到github。

1.在github上创建仓库

首先你得在github上创建一个账号,然后在github上创建一个仓库:

Git(三)Git的远程仓库

Git(三)Git的远程仓库

点击“create repository”按钮仓库就创建成功了。

Git(三)Git的远程仓库

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

Git(三)Git的远程仓库

执行命令完成后,在window本地用户.ssh目录C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥:

Git(三)Git的远程仓库

3. ssh密钥配置

密钥生成后需要在github上配置密钥本地才可以顺利访问。

Git(三)Git的远程仓库

使用文本编辑器打开刚刚生成的公钥(id_rsa.pub),在key部分将id_rsa.pub文件内容添加进去,然后点击“Add SSH key”按钮完成配置。

Git(三)Git的远程仓库

3. 同步到远程仓库

1) 使用git bash

在仓库所在的目录(D:\Develop\Git\git)点击右键选择“Git Bash Here”,启动git bash程序。

Git(三)Git的远程仓库

然后在git bash中执行如下语句(参考创建仓库界面命令):

git remote add origin  git@github.com:dengtianxiang/BigData.git

git push -u origin master

注意:其中红色字体部分需要替换成个人的用户名。

Git(三)Git的远程仓库

2)使用TortoiseGit同步

同步。在本地仓库的文件夹中单击右键,选择“Git同步”

Git(三)Git的远程仓库

点击推送

Git(三)Git的远程仓库

二. 从远程仓库克隆

克隆远程仓库也就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。选择一个任意部署仓库的目录,然后克隆远程仓库。

1.使用git bash

$ git clone git@github.com:dengtianxiang/BigData.git

Git(三)Git的远程仓库

2. 使用TortoiseGit

在任意目录点击右键:

Git(三)Git的远程仓库

Git(三)Git的远程仓库

三. 从远程仓库取代码

Git中从远程的分支获取最新的版本到本地有这样2个命令:

  1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
  2. git pull:相当于是从远程获取最新版本并merge到本地

上述命令其实相当于git fetch 和 git merge

Git(三)Git的远程仓库

在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。

如果使用TortoiseGit的话可以从右键菜单中点击“拉取”(pull)或者“获取”(fetch)

Git(三)Git的远程仓库

四. 搭建私有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同步的话参考上面的使用方法。