深入Git开发(Git生命周期和Git远程仓库操作详解)

上一章Git教程请查看:linux Git环境部署和自定义Git环境
这一章我们讨论Git的生命周期的基本概念,以及Git远程仓库的两个重要操作:创建远程仓库和克隆远程仓库。
一、Git生命周期这里我们将讨论Git的生命周期, 在后面的章节中,我们将介绍Git的每个操作命令。
Git的一般生命周期如下:

  • 将Git仓库克隆为工作副本。
  • 可以通过添加/编辑文件来修改工作副本。
  • 如有必要还可以通过使用其他开发人员的更改来更新工作副本。
  • 在提交之前查看更改。
  • 提交更改,如果一切正常,则将更改推送到仓库。
  • 提交后如果发现有问题,请更正最后一次提交并将更改推送到仓库。
下面显示的是生命周期的图表示。
深入Git开发(Git生命周期和Git远程仓库操作详解)

文章图片
二、创建远程Git仓库这里我们将了解如何创建远程Git仓库,从现在开始我们将其称为Git Server,我们需要一个Git服务器来允许团队协作。
1、创建新用户
# 添加新组 $ groupadd dev# 添加新用户 $ useradd -G dev -d /home/gituser -m -s /bin/bash gituser$ 更改密码 $ passwd gituser

上面的命令将产生以下结果。
$ sudo passwd gituser 输入新的 UNIX 密码: 重新输入新的 UNIX 密码: passwd:已成功更新密码

2、创建一个空仓库
首先要切换到新用户su gituser,然后让我们通过使用init命令以及– bare选项来初始化一个新的仓库。它在没有工作目录的情况下初始化仓库。按照惯例,空仓库必须命名为.git。
$ pwd /home/gituser$ mkdir project.git$ cd project.git/$ ls$ git --bare init$ ls

3、生成公共/专用RSA密钥对
让我们逐步完成配置Git服务器的过程,ss??h-keygen实用程序将生成公共/私有RSA密钥对,并将其用于用户身份验证。
打开一个终端并输入以下命令,然后为每个输入按Enter,成功完成后,它将在主目录中创建一个.ssh目录。
$ pwd$ ssh-keygen

上面的命令将产生以下结果。
深入Git开发(Git生命周期和Git远程仓库操作详解)

文章图片
ssh-keygen已生成两个密钥,第一个是私有密钥skey(即id_rsa),第二个是公开密钥skey.pub(即id_rsa.pub)。
注意:切勿与他人共享你的私钥。
4、将密钥添加到authorized_keys
假设有两个开发人员在一个项目上工作,分别是userA和userB,两个用户都生成了公共密钥,让我们看看如何使用这些密钥进行身份验证。
userA通过使用ssh-copy-id命令将他的公钥添加到服务器如下:
$ pwd /home/userA$ ssh-copy-id -i ~/.ssh/skey.pub gituser@git.server.com

同样userB使用ssh-copy-id命令将其公钥添加到服务器。
$ pwd /home/userB$ ssh-copy-id -i ~/.ssh/skey.pub gituser@git.server.com

5、将更改推送到仓库
【深入Git开发(Git生命周期和Git远程仓库操作详解)】我们在服务器上创建了一个空仓库,并允许两个用户访问,从现在开始userA和userB可以通过将其更改添加为仓库来将其更改推送到仓库。
Git init命令每次从.git/config文件中读取配置时,都会创建.git目录来存储有关仓库的元数据。
userA创建一个新目录,添加README文件,并将其更改作为初始提交进行提交,提交后他通过运行git log命令验证提交消息。
$ pwd /home/userA$ mkdir usera_repo$ cd usera_repo/$ git init$ echo 'TODO: Add contents for README' > README$ git status -s$ git add .$ git status -s$ git commit -m 'Initial commit'

userA可以通过执行git log命令检查日志消息。
userA将更改提交到本地仓库,现在该将更改推送到远程仓库了,但是在此之前,我们必须将仓库添加为远程仓库,这是一次性操作,此后他可以安全地将更改推送到远程仓库。
默认情况下Git仅推送到匹配的分支:对于本地存在的每个分支,如果已经存在相同名称的分支,则将更新远程端。在我们的教程中,每次我们将更改推送到Origin主分支时,请根据你的要求使用适当的分支名称。
$ git remote add origin gituser@git.server.com:project.git$ git push origin master

三、克隆Git远程仓库我们在Git服务器上有一个空仓库,userA也推出了他的第一个版本,现在userB可以查看他的更改,克隆操作将创建远程仓库的实例。
userB在其主目录中创建一个新目录并执行克隆操作。
$ mkdir userb_repo$ cd userb_repo/$ git clone gituser@git.server.com:project.git

userB可以将目录更改为新的本地仓库,并列出其目录内容。
$ cd project/$ ls README

    推荐阅读