Git设置最佳实践

时间:2012-02-14 19:29:14

标签: git

我的任务是为我的办公室设置Git。我们有几个网站。我只是为我们设置了一个网络驱动器来推动我们的更改。我的问题是:我在哪里创建Git存储库?

  1. 每个网站的新目录+ init?
  2. 干净的& amp;新的驱动器和每个目录不同的网站?
  3. 我失踪的其他更好的东西?
  4. 我向所有人寻求建议,特别是如果你诅咒了第一个提出“问为什么”的人?

5 个答案:

答案 0 :(得分:40)

如果网站(无论你想告诉它什么),repos的结构都不是问题,而是项目的问题

根据经验:

  • 为每个独立项目使用ONE(bare,祝福)回购
  • 如果共享通用模块,请使用submodules
  • 实现

在每个仓库中,使用branches构建工作,并且将分支与组织不同软件堆栈的方式混淆:分支用于在一个仓库中组织工作(即不同开发字符串ONE软件)。一个分支模型(在SO上似乎很受欢迎)就是这个:

enter image description here

困惑?好奇?阅读explanation ...

答案 1 :(得分:4)

如果您希望在一个git仓库中拥有所有代码库,或者每个代码库都在自己的代码库中,那么这是一个偏好问题。也就是说,我的偏好是每个代码库/站点一个git repo。通过这种方式,您可以在单个站点上工作而无需查看其他站点,并且您不必担心其他站点的更改会妨碍您可能推送到任何给定站点的任何提交。

答案 2 :(得分:2)

如果您在内部托管回购,我会推荐使用gitolite。只需更改混淆文件即可添加中央仓库。

除非您正在进行跨平台开发,否则请将auto crlf设置为false。

以这种方式管理您的分支机构:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

答案 3 :(得分:1)

您可能希望拥有一个集中式服务器,您可以将更改推送到克隆并从中进行克隆。此服务器可能有一个或多个存储库。我建议阅读http://sethrobertson.github.com/GitBestPractices/,其中有几个直接感兴趣的部分。具体选择本地工作流程,分布式工作流程以及如何将工作划分为存储库。

答案 4 :(得分:1)

基本设置

我建议你在服务器上创建一个专门用于git的目录。

我在我公司运行的服务器上使用了目录名/git来处理与工作相关的事情,为了个人使用,我还在私人网络服务器上创建了一个名为/git的目录。

在/ git目录中,您可以为项目创建裸存储库

ssh git@myserver
cd /git
mkdir Project7sName.git
cd Project7sName.git
git init --bare
echo "Take over the world project" > description

添加查看器

然后,您可以在服务器上安装类似GitList的内容,以便软件更改可以很好地查看,例如红色删除和绿色插入。

GitList example image

分布式版本控制?

Git是一个分布式版本控制系统。所以你可能想在几个站点上这样做。这样做的好处是,如果您在任何时候丢失与其他站点的连接,您可以继续不间断地工作。此外,如果您有硬盘驱动器故障或任何类似的问题,您有多个数据副本。

如果您希望人们随时推荐,您可以指定某个网站作为主要网站,或者您的工作实践可能是人们推送到您的所有服务器网站。

使用

之类的命令
git remote add siteA ssh://git@siteA/git/repositoryX.git

所以你可以做一些像

这样的事情
git push siteA master
git push siteB master

我有一个备份脚本,它每天运行,从github,我们自己的gitserver,一个NAS驱动器,一个USB驱动器,并推送到每个。

这样做有两种方法可以确保软件更改有多个副本。

  1. 由用户(推送到多个站点)和
  2. 通过管理(复制网站之间的更改)。
  3. 首先在服务器上设置Git并添加类似GitList的内容以便很好地查看更改。

    一旦您正确理解了所涉及的步骤,您可以根据自己的喜好在其他网站上重复这些步骤。

    导入旧项目?

    作为系统管理员,您可能希望将旧项目导入Git。

    您可以通过提交空存储库来执行此操作。

    git touch .gitignore
    git add .gitignore
    git commit -m Empty
    

    然后反复将项目的存档版本解压缩到项目目录(除了git文件之外清空)并提交存档状态。

    rm *
    unzip ...
    git add *
    git commit -m "Archived state 2013 week 18"
    git tag ArchivedState2013week18
    

    如果您按时间顺序提交存档状态,那么您的查看软件(GitList或其他)可能会开始向您显示历史修复的软件更改,尽管有时混合在一起而在其他情况下不完整。

    此外,您可以使用git blame了解何时引入了一些代码。