2012-02-14 141 views
14

我的任务是为我的办公室设置Git。我们有几个网站。我只是为我们设置了一个网络驱动器来推动我们的修改。我的问题是:我在哪里启动Git存储库?Git安装最佳实践

  1. 每个站点的新dir + init?
  2. 一个init在干净的&新驱动器和每个目录不同的网站?
  3. 还有什么更好的,我失踪了?

我从任何和所有人寻求建议,特别是如果你诅咒了第一个设置它问“为什么”的人?

+5

如果你是一个完整的新手:他们如何在这个世界上把这个任务交给你?谁决定采取混帐时,即使是必须建立它的人完全不知道系统? – eckes 2012-02-14 19:31:02

+1

小型开发团队,我们都戴着很多帽子......我最初的问题就是这样。 – rpophessagr 2012-02-14 19:31:48

+1

@rpophessagr - 这是我第一次见到任何人引用的E.E.Cummings诗。我甚至使用它作为我自己的用户名。凉! – 2012-02-14 19:41:04

回答

4

这是一个偏好问题,如果你宁愿将所有代码库放在一个git仓库中,或者每个仓库都有自己的代码仓库。也就是说,我的偏好是每个代码库/站点的一个git repo。这样,您可以在单一网站上工作而无需查看其他网站,而且您不必担心其他网站的更改会妨碍您可能推送到任何特定网站的任何提交。

+0

谢谢,这很有道理。 – rpophessagr 2012-02-14 19:34:32

+1

如果您需要能够更改某件事的版本而不影响另一件事,那么它们需要位于单独的存储库中 - 这不是偏好问题。 – Cascabel 2012-02-14 21:48:56

36

回购的结构是不是一个问题,如果网站(无论你想告诉与此),但项目的问题。

作为一个经验法则:

  • 使用一(bare,福地)回购每个独立项目
  • 如果公共模块被共享,实现与submodules

在每个回购,用branches结构化工作,并做而不是混淆分支与组织不同软件栈的方式:分支用于组织工作o ne repo(即ONE软件的不同开发字符串)。一个分支模型(这似乎是相当流行在这里SO),这是一个:

enter image description here

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

+0

谢谢!通过子模块你是指分支机构?或者是其他东西? – rpophessagr 2012-02-14 19:37:34

+1

+1 for bare repo('git init --bare') - 绝对是OP环境的必备品,听起来像。 – 2012-02-14 19:38:27

+0

伟大的文章感谢! – rpophessagr 2012-02-14 19:41:52

1

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

2

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

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

管理您的分支机构是这样的:

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

0

基本设置

我建议你创建专门的git服务器上的目录。

我在我的公司运行的服务器上使用目录名/git进行工作相关的事情和个人使用我还在专用Web服务器上创建了一个名为/git的目录。

里面你/ git的目录,你可以创建裸存储库为您的项目

ssh [email protected] 
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://[email protected]/git/repositoryX.git 

这样你就可以做这样的事情

git push siteA master 
git push siteB master 

我有每天开行,从GitHub拉动,从我们自己的gitserver,一个NAS备份脚本驱动器,USB驱动器,并推向他们每个人。

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

  1. 通过用户(推到多个站点)和
  2. 通过管理(复制站点之间的变化)。

首先在服务器上设置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有一些想法,当一些代码行被引入。