如何将包含多个分支的现有源代码导入git

时间:2015-02-02 17:08:13

标签: git version-control bitbucket atlassian-sourcetree

我有一个HTML / PHP网站,目前没有任何源代码控制。我有两个不同的文件夹,一个开发和实时文件夹。开发文件夹是我创建新功能的地方,实时文件夹是实际用于实际用户的源。我想代表dev并在git中作为两个不同的分支生活(我认为这是建模它的正确方法,我对其他建议开放)。我想确保一旦我设置了这两个分支,我将能够利用git merge(dev - > live)将功能从dev移动到生存完成/测试后。

我不确定如何正确设置这两个分支,因为它们已经存在于我的文件夹中并且有些不同。它们有不同的路径,不同的数据库连接信息等。如果项目是从头开始在git中跟踪的话,这通常不会引起我的关注,因为dev和live分支自然会在历史中分支并且有一些共同的祖先提交。我想确保合并可以使功能结束,但不会覆盖固定路径,数据库连接信息等。

我正在使用Bitbucket和SourceTree。

1 个答案:

答案 0 :(得分:0)

我们假设您有两个目录(文件夹):/dev/live。你试图将它们放在不同的分支中是正确的。但是,此外,您将需要为将来创建两个单独的存储库。您可能还希望拥有一个中央存储库,以便您可以与其他人协作,但如果您现在没有这种需求,您只需将更改添加到" live"来自" dev"的存储库库中。

  

他们有不同的路径,不同的数据库连接信息等。

这种类型的东西应该被跟踪。应使用.gitignore文件忽略所有属性文件。请在documantion for .gitignore

中阅读

我在下面列出的命令有点简化。如果您有许多离散的挂起更改,您可能希望直接在master之外创建多个分支,并且只将文件添加到属于特定分支的索引。如果您不打算同时迁移,则尤其如此。但是,对于您的第一次尝试,可能更容易测试开发,直到它可以完全转移到实时,并在此之后开始更好的工作流程。

cd /live
git init
git add <...> #My suggestion is that you add files manually, so that you do not add configuration files by mistake
git commit -m 'Initial Commit'
cd /dev
git init
cd /live
git remote add dev /dev/.git
git push dev master # this is the only time you should push from live to dev
cd /dev
git checkout -b develope
git add <...> #same warning as before
git commit -m 'Initial Development Commit'

在此之后,每次处理新功能或错误修复时都应检查新分支。在dev目录中完成测试后,将您的功能合并到master中。然后:

cd /live
git fetch dev master

您可能还想做其他事情,例如标记版本,但我认为这已经超出了您的问题的范围。