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

generating a Git repo from two different codebases

我们的这个软件在生产环境和开发环境中都长期没有版本控制,开发人员在每次更改时手动修补文件(或者有时只更改生产环境以进行修补程序) .就像在丛林中一样。 现在,我们将其置于 Git 版本控制之下:我在生产环境中使用 "master" 分支创建了一个回购协议,并将其推送到专用服务器上的新 "origin" 远程。 现在我也想将开发环境作为工作副本,但我不想失去与生产环境的差异(可能有用,谁知道?)。

我猜一个可能是: a) 移走所有文件 b) 从源头克隆 c) 将我的文件重新移动到原来的位置

在这种情况下,Git 可能会正确突出显示两个代码库之间的差异。 有没有更粗暴的方法得到同样的结果?

在您的开发机器上初始化一个空的 Git 存储库:git init .。添加源代码库:git remote add ...。从远程源存储库中获取所有更改:git fetch origin。 Fetching只会创建一个远程分支origin/master,完全不会影响本地文件。将本地文件与您刚刚从原始存储库中获取的远程分支进行比较。

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

  1. git init 在即将成为工作副本中初始化 repo
  2. git add remote origin ... 添加对远程存储库的引用
  3. git fetch origin 在不修改本地文件的情况下使远程分支可用
  4. git checkout -b dev 创建开发分支
  5. git add :/ && git commit 添加并提交所有本地更改

现在你已经在一个分支中提交了你的开发环境,你可以从这里使用它。推送它以使其在专用服务器上也可用。

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

  • 将 "master" 分支保留为生产分支
  • 创建一个"development"分支作为开发分支

您已经在 master 中有生产,因此您可以执行以下操作在 "development"

中获取开发
  • git分支发展
  • git结帐开发
  • # 删除工作目录中的所有生产文件(.git 目录除外)
  • #复制所有开发文件到你的工作目录
  • git 添加 .
  • git commit -m "import of development branch files"
  • git 推源开发

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

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

您也可以单独维护每个分支。最终,您可以决定将 development 中的提交合并到您认为合适的 master 中,或者对两者进行 cherry-pick(hotfix)特定提交。