繁体   English   中英

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

[英]How to import existing source code with multiple branches into git

我有一个HTML / PHP网站,该网站目前不在任何源代码管理中。 我有两个不同的文件夹,一个是开发文件夹,另一个是实时文件夹。 开发文件夹是我创建新功能的地方,实时文件夹是实际用于实际用户的源。 我想在git中将dev和live表现为两个不同的分支(我认为这是对它进行建模的正确方法,我愿意接受其他建议。) 我想确保一旦设置了这两个分支,就可以在完成/测试功能后利用git merge(dev-> live)将功能从dev转移到live。

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

我正在使用Bitbucket和SourceTree。

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

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

完全不应该跟踪这种类型的东西。 应该使用.gitignore文件忽略所有属性文件。 请阅读有关.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

您可能还需要做其他事情,例如标记发布,但是我认为这已经超出了您的问题范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM