从两个不同的代码库生成一个Git repo

时间:2015-04-20 08:31:11

标签: git git-clone git-checkout

我们有这个软件长期没有版本控制,无论是在生产环境还是开发环境中,开发人员在每次更改时手动修补文件(或者有时只更改生产环境的修补程序)。喜欢在丛林中。 现在,我们将它置于Git版本控制之下:我在生产环境中使用" master"创建了一个repo。分支,并把它推入一个新的"起源"远程专用服务器。 现在我也希望将dev环境作为工作副本,但我不想失去与prod环境的差异(有些东西可能有用,谁知道?)。

我想有可能是: a)移走所有文件 b)从原产地克隆 c)将我的文件重新移动到其原始位置

在这种情况下,Git可能会正确地突出显示两个代码库之间的差异。 有一种不太残酷的方法可以获得相同的结果吗?

3 个答案:

答案 0 :(得分:3)

您需要决定长期的git工作流程。一个简单的方法是:

  • 保持"主人"分支机构作为生产分支机构
  • 创建一个"开发"分支机构作为开发分支

您已经拥有master中的作品,因此您可以执行以下操作来开发"开发"

  • git branch development
  • git checkout development
  • #删除工作目录中的所有生产文件(.git目录除外)
  • #将所有开发文件复制到您的工作目录
  • git add。
  • git commit -m"导入开发分支文件"
  • git push origin development

此时,您将在工作目录和源服务器上的同一git存储库中拥有一个master(生产)分支和开发分支。

您现在可以在任一分支的提交之间进行差异并查看更改。

您也可以单独维护每个分支。最终,您可以根据需要决定将提交从开发合并到主服务器,或者在两者上进行樱桃挑选(修补程序)特定提交。

答案 1 :(得分:1)

  1. git init即将成为初始化回购的副本
  2. git add remote origin ...添加对远程存储库的引用
  3. git fetch origin使远程分支可用而不修改本地文件
  4. git checkout -b dev创建开发分支
  5. git add :/ && git commit添加并提交所有本地更改
  6. 现在你已经在分支机构中提交了你的dev env,你可以从这里开始使用它。推送它以使其在专用服务器上可用。

答案 2 :(得分:0)

在您的开发计算机上初始化一个空的Git仓库:git init .。添加原始仓库:git remote add ...。从远程源repo获取所有更改:git fetch origin。提取只会创建一个远程分支origin/master,并且根本不会影响本地文件。将本地文件与刚刚从源repo中获取的远程分支进行区分。

也许在您获取之前,您可以将所有本地文件提交到本地分支。这会让它更舒服。