使用git作为集中式版本服务器

7
我目前在工作中使用svn。
我们的设置是:每个人都有一个工作副本,我们提交到由apache2提供的svn服务器。
所以我提交更改,其他人更新,每个人可以随意使用副本进行工作。
所以部署相当容易。
但现在,我想用Git做同样的事情。这可能吗?
我想在我的主服务器上拥有一个git仓库,在家里开发,提交更改到服务器等。
谢谢您的帮助。
5个回答

4

Git - SVN Crash Course

这对于初学者特别有用。

git init
git add
git clone git://...
git pull
git fetch
git push

那么请查看git网站上的其他文档。 Git文档

3

除了其他答案中提到的内容,还有一点需要补充:

虽然集中式工作流(只有一个“中央”Git存储库)是可能的,但您需要记住,Git以不同的方式组织其数据(作为整体,查看数据内容来推断各种属性,例如文件重命名)。 有关Svn和Git之间更多差异的信息,请参见此答案

一个结果是,您不一定需要仅拥有一个Git中央存储库,而是需要多个,特别是如果您有许多具有不同和独立历史记录的文件组(它们以自己的速度发展)。

SVN可以在一个存储库中存储所有这些不同的组,并且可以分支或标记任何部分(只需将所需内容复制到表示分支或标记的“目录”中即可)。Git在存储库级别上进行分支和标记。

如果您的文件集相当一致,则可以拥有一个Git中央存储库,但如果您有多个组件,则可能需要几个“中央”Git存储库更好。


我认为你的意思是,如果有自包含的模块,它们可以更容易地在项目之间共享,如果它们是自己的git repo。与svn不同,git不能克隆repo级别以下的内容,因此共享repo的一部分很困难(但git可以制作类似svn的分支,因为它们只是文件夹的副本)。对于小型项目,最好使用一个repo(10个文件的两个repo开销太大)。您可以使用filter-branch等工具将其重构为多个repo。 - idbrii
@pydave:是的,稀疏检出(https://dev59.com/fHE95IYBdhLWcg3wY81l)很难。不,Git不想做“类似svn”的分支(发抖):在Git中,分支是一等公民,而不是像SVN中的目录:https://dev59.com/IW435IYBdhLWcg3w-1V_#5101286和https://dev59.com/3HI-5IYBdhLWcg3w8dYQ#1599930 - VonC
@pydave:是的,你可以使用filter-branch稍后重构Git仓库,但是Git更适合基于组件的方法(即每个组件一个仓库):http://stackoverflow.com/questions/6925425/git-strategy-for-a-project-with-many-independent-modules/6926225#6926225 - VonC
要明确的是,我并不鼓励任何人使用svn风格的分支。这样做是疯狂的。 - idbrii

2

只需建立一个集中的仓库,让每个人都向其推送并从中拉取。

尽管git没有中心或优选仓库的概念,但这并不意味着您不能通过团队内的约定将其指定为中心仓库。


1

是的,这是可能的。

在您的东西所在的服务器上:

  git init
  git add .

在您的本地计算机上:

  git clone git://yourserver/repo localfolder

获取更改:
  git pull
  git fetch

发送更改到服务器:
  git push

以下是如何设置您的服务器的链接


git://yourserver/repo localfolder但是这个路径,会被普通的Apache目录列表所服务吗? - Tommy B.
请参见 http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#sharing-development。 - Egon
谢谢你的回答,但我还是不太明白哈哈。但我在你发给我的文档中找到了以下内容: $ git clone ssh://yourhost/~you/repository所以这应该可以解决问题。 - Tommy B.
1
你应该在服务器上创建一个裸仓库。 - innaM

1
当然可以 - 您可以设置中央(裸)GIT存储库,用作中心点。或者使用类似GitHub的东西。
对于GIT来说,更重要的是根据您的需求设置进程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接