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

How to import existing source code with multiple branches into git

我有一个 HTML/PHP 网站,目前不在任何源代码管理中。我有两个不同的文件夹,一个是开发文件夹,一个是实时文件夹。 development 文件夹是我创建新功能的地方,live 文件夹是真实用户实际使用的源。我想在 git 中代表 dev 和 live 作为两个不同的分支(我认为这是建模它的正确方法,我愿意接受其他建议)。我想确保一旦我设置了这两个分支,我将能够利用 git merge (dev --> live) 将功能从 dev 移动到 live 一旦它们是 completed/tested.

我不确定我将如何正确设置这两个分支,因为它们已经存在于我的文件夹中并且有些不同。它们有不同的路径、不同的数据库连接信息等。如果项目从一开始就在 git 中跟踪,这通常不会让我担心,因为那样的话开发和实时分支自然会在历史中分支并有一些共同祖先提交。我想确保合并能够带来功能,但不会覆盖固定路径、数据库连接信息等。

我正在使用 Bitbucket 和 SourceTree。

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

They have different paths, different database connection info, etc.

这类东西 根本 不应该被跟踪。应使用 .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

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