在本章中,我们将看到如何创建一个远程Git仓库,从现在开始,我们将会把它作为Git服务器。我们需要一个的Git服务器允许团队协作。

创建新用户

# add new group

[root@CentOS ~]# groupadd dev # add new user

[root@CentOS ~]# useradd -G devs -d /home/gituser -m -s /bin/bash gituser

# change password

[root@CentOS ~]# passwd gituser

上面的命令会产生以下结果。

Changing password for user gituser. New password: Retype new password: passwd: all authentication tokens updated successfully.

创建一个裸库

让我们初始化一个新的资料库使用init命令后面加上 -bare选项。它初始化没有工作目录库。按照惯例裸库必须命名为 .git。

[gituser@CentOS ~]$ pwd /home/gituser

[gituser@CentOS ~]$ mkdir project.git

[gituser@CentOS ~]$ cd project.git/

[gituser@CentOS project.git]$ ls

[gituser@CentOS project.git]$ git –bare init Initialized empty Git repository in /home/gituser-m/project.git/

[gituser@CentOS project.git]$ ls branches config description HEAD hooks info objects refs

生成公共/私有RSA密钥

让我们遍历Git服务器端的配置过程中,使用ssh-keygen实用程序生成公共/私有RSA密钥对,我们将使用这些键进行用户认证

打开一个终端并输入以下命令,直接按回车为每个输入。成功完成后,它会创建主目录 .ssh目录内。

tom@CentOS ~]$ pwd /home/tom [tom@CentOS ~]$ ssh-keygen

上面的命令会产生以下结果。

Generating public/private rsa key pair. Enter file in which to save the key (/home/tom/.ssh/id_rsa): Press Enter Only Created directory ‘/home/tom/.ssh’. Enter passphrase (empty for no passphrase): —————> Press Enter Only Enter same passphrase again: ——————————> Press Enter Only Your identification has been saved in /home/tom/.ssh/id_rsa. Your public key has been saved in /home/tom/.ssh/id_rsa.pub. The key fingerprint is: df:93:8c:a1:b8:b7:67:69:3a:1f:65:e8:0e:e9:25:a1 tom@CentOS The key’s randomart image is: +–[ RSA 2048]—-+ | | | | | | | . | | Soo | | o*B. | | E = *.= | | oo==. . | | ..+Oo | +—————–+

ssh-keygen 已经产生了两个键,第一个是私有的(即id_rsa),另一个是公共(即id_rsa.pub文件)。

注: 切勿与他人共享你的私钥。

添加键 authorized_keys

假设有两个开发项目即Tom 和Jerry工作。两个用户生成公钥。让我们来看看如何使用这些密钥进行身份验证。

Tom 添加他的公钥服务器使用 ssh-copy-id这个命令下面给出

[tom@CentOS ~]$ pwd /home/tom

[tom@CentOS ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub gituser@git.server.com

上面的命令会产生以下结果。

gituser@git.server.com’s password: Now try logging into the machine, with “ssh ‘gituser@git.server.com'”, and check in: .ssh/authorized_keys to make sure we haven’t added extra keys that you weren’t expecting.

同样,Jerry 也增加了他的公共密钥服务器使用 ssh-copy-id 这个命令。

[jerry@CentOS ~]$ pwd /home/jerry

[jerry@CentOS ~]$ ssh-copy-id -i ~/.ssh/id_rsa gituser@git.server.com

上面的命令会产生以下结果。

gituser@git.server.com’s password: Now try logging into the machine, with “ssh ‘gituser@git.server.com'”, and check in: .ssh/authorized_keys to make sure we haven’t added extra keys that you weren’t expecting.

推修改到版本库

我们已经创建了裸库在服务器上,并允许两个用户访问。从现在Tom 和 Jerry 可以把他们修改到版本库,将其添加为远程。

Git的init命令创建 .git 目录来存储元数据的存储库。每次读取配置从 .git/config 文件.

Tom 创建一个新的目录,添加READE文件作为初始提交并提交他的变化。提交后,他确认提交信息,运行git日志命令。

[tom@CentOS ~]$ pwd /home/tom

[tom@CentOS ~]$ mkdir tom_repo

[tom@CentOS ~]$ cd tom_repo/

[tom@CentOS tom_repo]$ git init Initialized empty Git repository in /home/tom/tom_repo/.git/

[tom@CentOS tom_repo]$ echo ‘TODO: Add contents for README’ > README

[tom@CentOS tom_repo]$ git status -s ?? README

[tom@CentOS tom_repo]$ git add .

[tom@CentOS tom_repo]$ git status -s A README

[tom@CentOS tom_repo]$ git commit -m ‘Initial commit’

上面的命令会产生以下结果。

[master (root-commit) 19ae206] Initial commit 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 README

Tom 执行git 的日志命令,检查日志消息。

[tom@CentOS tom_repo]$ git log

上面的命令会产生以下结果。

commit 19ae20683fc460db7d127cf201a1429523b0e319 Author: Tom Cat <tom@yiibai.com> Date: Wed Sep 11 07:32:56 2013 +0530 Initial commit

Tom 提交了他的变化到本地资源库。现在是时候将更改到远程仓库。但在此之前,我们必须添加作为远程仓库,这是一个时间的操作。在此之后,他可以放心地推送到远程存储库的更改。

注: 默认情况下,Git的推到匹配的分支:对于每一个分支退出本地端的远程端更新,如果已经存在具有相同名称的一个分支。在我们的教程每次我推原点主分支的变化,根据您的要求,使用适当的分支名。

[tom@CentOS tom_repo]$ git remote add origin gituser@git.server.com:project.git

[tom@CentOS tom_repo]$ git push origin master

上面的命令会产生以下结果。

Counting objects: 3, done. Writing objects: 100% (3/3), 242 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To gituser@git.server.com:project.git * [new branch] master −> master

现在更改成功提交到远程仓库。

PS:如果您想和业内技术大牛交流的话,请加qq群(521249302)或者关注微信公众 号(AskHarries),谢谢!

Git 创建操作的更多相关文章

  1. Git远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  2. Git远程操作

    Git远程操作 // */ // ]]>   Git远程操作 Table of Contents 1 Git远程命令概览 2 Git远程仓库与本地仓库的关系图 3 git clone 4 git ...

  3. [转]Git远程操作详解

    原文:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多 ...

  4. Git 基础操作

    [TOC] 在Linux上安装Git $ git --version #查看git的版本号 $ sudo apt-get install git # 安装git 创建版本库 $ git init # ...

  5. Git基础操作

    配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...

  6. Git 远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  7. git创建分支并提交项目

    git 创建分支, 切换分支, 合并分支, 删除分支及提交[commit提交到本地仓库push名利提交到远程服务器], 检出[pull], 冲突修改, 本地仓库同步远程服务器[pul和push命令l] ...

  8. 【Git】Git远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  9. Composer 结合 Git 创建 “服务类库”

    Composer 结合 Git 创建 "服务类库" 我一直认为,现在的 PHP 已经进展到了工程化的领域.以前的 PHP 开发者,以快为美,速度和规模永远都是矛盾体.现在的 PHP ...

随机推荐

  1. Windows 计划任务 Task Schedule 怎么 运行 .bat文件

    1. 新建 test.bat 需要切换文件夹以后 并且执行程序. cd /D "F:\xxxfolder" && dotnet testdll.dll 2. 直接设 ...

  2. 如何在Visual Studio VS中定义多项目模板

    https://msdn.microsoft.com/en-us/library/ms185308.aspx Multi-project templates act as containers for ...

  3. jmeter经验---java 追加写入代码一例

    最近最项目参数化的时候用到,场景是这样的,需要测试A和B两个接口,其中B接口传入的参数必须是传递给A接口过的,所以整理一个思路就是: 1. 正常调用A接口,但是将传递给A接口的参数保存到文本里,此处要 ...

  4. sqlserver自定义函数与存储过程的区别 实例详解

    分享下sql server自定义函数与存储过程的区别,一起来学习下. 一.自定义函数: 1. 可以返回表变量 2. 限制颇多,包括 不能使用output参数: 不能用临时表: 函数内部的操作不能影响到 ...

  5. git 生成ssh keys

    最近从svn转到gitlab 记录一下如何生成ssh keys 首先下载GitExtensions246SetupComplete.msi并安装,如果已经安装了git,那么安装途中就跳过就行 安装完毕 ...

  6. nginx.conf中关于nginx-rtmp-module配置指令详解

    译序:截至 Jul 8th,2013 官方公布的最新 Nginx RTMP 模块 nginx-rtmp-module 指令详解.指令Corertmp语法:rtmp { ... }上下文:根描述:保存所 ...

  7. javascript基础拾遗(二)

    1.对象定义 定义属性 var language = { name:'javascript', score:9.0 }; console.log(language.name) console.log( ...

  8. 内核参数SEMMSL SEMMNS SEMOPM SEMMNI参数的设置

    内核参数SEMMSL SEMMNS SEMOPM SEMMNI参数的设置  转自:http://www.dbafree.net/?p=92   这四个参数自己一直没搞清楚 今天问了下同事,大概整了一下 ...

  9. python 获取环境变量

    python 获取环境变量 参考 https://docs.python.org/2/library/os.html 使用os.environ获取环境变量字典 import os env_dist = ...

  10. 【Ensemble methods】组合方法&集成方法

    机器学习的算法中,讨论的最多的是某种特定的算法,比如Decision Tree,KNN等,在实际工作以及kaggle竞赛中,Ensemble methods(组合方法)的效果往往是最好的,当然需要消耗 ...