zoukankan      html  css  js  c++  java
  • git服务搭建

    TAGS

    git

    git 使用初探

    by Kv Yang on 五月 27th, 2010

    追求好的版本控制, 让开发变得更加简单是学习git的一个理由, 且git不会在每个目录下都生成.svn文件.分布式版本部署,强大的分支功能让我觉得git很有魅力.
    使用git也会对我目前熟悉的开发工具产生些震荡, 要慢慢从windows下的开发转向linux的开发.

    一 git常用命令:

    设置git默认文本编辑器

    $ git config --global core.editor vi

    设置解决合并冲突时使用哪种差异分析工具

    $ git config --global merge.tool vimdiff

    第一次下载,包括源码和版本库

    git clone http://projectname 或 git clone git@gitserver:/projectname

     
    下载服务器上最新的更新

    git pull

    检出某个修订版本

    git reset –hard -r 

    新增被跟踪文件

    git add /path/to/file

    移除被跟踪文件

    git rm /path/to/file

    查看已暂存和未暂存的更新

    $ git status

    生成补丁

    git diff >patch_file

    提交

    git commit
    git remote add origin git@gitserver:/home/git/w3cnotes.git
    

    二 git服务器架设

    把一个git仓库放到你和你的同事都能用ssh访问,读写的服务器上, 就搭建好了一个git服务.
    在ubuntu下安装git

    $ apt-get instal git-core

    在windows下安装git
    请下载msysgit,下载地址http://code.google.com/p/msysgit/
    都安装好了之后, 部署一个git代码仓库相当简单.进入项目目录/home/git/w3cnotes.git
    1 .创建一个空的代码仓库
    使用 –bare 选项运行 git init 来设定一个空仓库,这会初始化一个不包含工作目录的仓库

    $ git init --bare

    2. 把用户事先生成的公钥内容追加到authorized_keys 文件
    完成这一步需要在你本机上进入SSH 公钥默认储存在账户的 ~/.ssh 目录

    $$ cd ~/.ssh
    $ ls
    authorized_keys2  id_dsa       known_hosts
    config            id_dsa.pub
    

    然后执行命令:

    $ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/schacon/.ssh/id_rsa): id_rsa.yk
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /Users/schacon/.ssh/id_rsa.
    Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
    The key fingerprint is:
    43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a schacon@agadorlaptop.local
    

    这里我生成了id_rsa.yk.pub公钥, 并上传到服务器上的/tmp目录,追加到home/yk/.ssh/authorized_keys 文件后

    $ cat /tmp/id_rsa.yk.pub >> ~/.ssh/authorized_keys

    三 本地推送代码到服务器

    $ cd testgit
    $ git init
    $ git add .
    $ git commit -m 'initial commit'
    $ git remote add origin git@gitserver:/home/git/w3cnotes.git
    $ git push origin master
    

    注:gitserver为服务器ip或域名,@前面为服务器用户.

    四 本地拉取git服务器代码

    $ git clone git@gitserver:/home/git/w3cnotes.git
    $ vim README
    $ git commit -am 'fix for the README file'
    $ git push origin master
    

    git工具参考:
    http://code.google.com/p/msysgit/
    http://code.google.com/p/tortoisegit/
    Cygwin
    eclipse EGit
    资料参考:
    http://progit.org/book/zh
    SVN,HG,GIT命令对照

    bare

     

    [bɛə]

       添加生词 
    adj.赤裸的, 空的, 仅有的 
    vt.使裸露, 暴露

    beanstalk不稳定,无奈,还是得自己搭git服务

    reference :

    http://progit.org/book/zh/ch4-2.html

    在服务器部署 Git

    开始架设 Git 服务器的时候,需要把一个现存的仓库导出为新的纯仓库——不包含当前工作目录的仓库。方法非常直截了当。 把一个仓库克隆为纯仓库,可以使用 clone 命令的 --bare 选项。纯仓库的目录名以.git 结尾, 如下:

    $ git clone --bare my_project my_project.git
    Initialized empty Git repository in /opt/projects/my_project.git/

    该命令的输出有点迷惑人。由于 clone 基本上等于 git init 加 git fetch,这里出现的就是 git init 的输出,它建立了一个空目录。实际的对象转换不会有任何输出,不过确实发生了。现在在my_project.git 中已经有了一份 Git 目录数据的副本。

    大体上相当于

    $ cp -Rf my_project/.git my_project.git

    在配置文件中有几个小改变;不过从效果角度讲,克隆的内容是一样的。它仅包含了 Git 目录,没有工作目录,并且专门为之(译注: Git 目录)建立了一个单独的目录。

    将纯目录转移到服务器

    有了仓库的纯副本以后,剩下的就是把它放在服务器上并设定相关的协议。假设一个域名为git.example.com 的服务器已经架设好,并可以通过 SSH 访问,而你想把所有的 Git 仓库储存在/opt/git 目录下。只要把纯仓库复制上去:

    $ scp -r my_project.git user@git.example.com:/opt/git

    现在,其他对该服务器具有 SSH 访问权限并可以读取 /opt/git 的用户可以用以下命令克隆:

    $ git clone user@git.example.com:/opt/git/my_project.git

    假如一个 SSH 用户对 /opt/git/my_project.git 目录有写权限,他会自动具有推送权限。这时如果运行git init 命令的时候加上 --shared 选项,Git 会自动对该仓库加入可写的组。

    $ ssh user@git.example.com
    $ cd /opt/git/my_project.git
    $ git init --bare --shared

    可见选择一个 Git 仓库,创建一个纯的版本,最后把它放在你和同事都有 SSH 访问权的服务器上是多么容易。现在已经可以开始在同一项目上密切合作了。

    值得注意的是,这的的确确是架设一个少数人具有连接权的 Git 服务的全部——只要在服务器上加入可以用 SSH 接入的帐号,然后把纯仓库放在大家都有读写权限的地方。一切都做好了,无须更多。

    下面的几节中,你会了解如何扩展到更复杂的设定。这些内容包含如何避免为每一个用户建立一个账户,给仓库添加公共读取权限,架设网页界面,使用 Gitosis 工具等等。然而,只是和几个人在一个不公开的项目上合作的话,仅仅是一个 SSH 服务器和纯仓库就足够了,请牢记这一点。

    小型安装

    如果设备较少或者你只想在小型的开发团队里尝试 Git ,那么一切都很简单。架设 Git 服务最复杂的方面之一在于账户管理。如果需要仓库对特定的用户可读,而给另一部分用户读写权限,那么访问和许可的安排就比较困难。

    SSH 连接

    如果已经有了一个所有开发成员都可以用 SSH 访问的服务器,架设第一个服务器将变得异常简单,几乎什么都不用做(正如上节中介绍的那样)。如果需要对仓库进行更复杂的访问控制,只要使用服务器操作系统的本地文件访问许可机制就行了。

    如果需要团队里的每个人都对仓库有写权限,又不能给每个人在服务器上建立账户,那么提供 SSH 连接就是唯一的选择了。我们假设用来共享仓库的服务器已经安装了 SSH 服务,而且你通过它访问服务器。

    有好几个办法可以让团队的每个人都有访问权。第一个办法是给每个人建立一个账户,直截了当但过于繁琐。反复的运行 adduser 并且给所有人设定临时密码可不是好玩的。

    第二个办法是在主机上建立一个 git 账户,让每个需要写权限的人发送一个 SSH 公钥,然后将其加入git 账户的 ~/.ssh/authorized_keys 文件。这样一来,所有人都将通过 git 账户访问主机。这丝毫不会影响提交的数据——访问主机用的身份不会影响commit的记录。

    另一个办法是让 SSH 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权。只要每个人都能获得主机的 shell 访问权,任何可用的 SSH 授权机制都能达到相同效果。

     

     

    http://www.ossxp.com/doc/git/gitolite.html

    Gitolite 构建 Git 服务器

  • 相关阅读:
    Python字符串
    ListCtrl控件
    leetcode1004
    leetcode1003
    leetcode1002
    leetcode153
    leetcode540
    leetcode435
    leetcode999
    leetcode997
  • 原文地址:https://www.cnblogs.com/lexus/p/1911799.html
Copyright © 2011-2022 走看看