常规删除/覆盖源目录时使用Git

时间:2015-06-22 16:34:44

标签: git version-control

我试图找出如何让Git与我在办公室编写代码的其他三个人一起工作。我们为众多不同的目标开发自定义应用程序(通常,"目标"是不会运行版本控制的嵌入式系统)。

在理想的世界中,我们可以在每个目标的各个源文件夹中创建存储库,并且能够正确地同步我们的工作。代码既可以在离线系统上也可以在实时系统上进行修改,但是只要我们修改实时系统中的代码 - 我们就可以将其转移回开发机器进行共享/存档 - 开发工具必须完全删除dev机器上相应的源文件夹,当我们将修改后的代码拉回时,将其替换为目标中的目录。每当我们想要备份对实时系统所做的更改时,就会摧毁目录中的任何repo文件,这种情况经常发生。

此外,我们有数百种不同的应用程序需要版本控制,这些应用程序不应同时存储在每台开发机器上。如何在不能将存储库信息存储在各个源目录中的情况下推送/拉取/克隆单个应用程序?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您在源文件夹中存在.git文件时会遇到问题,您希望将其复制到目标文件中。

我能想到的最简单的解决方案是:

  • 为每个应用程序创建一个git存储库
  • 将应上传的文件夹放入该回购的目标 它甚至可能是git工作副本根级别的唯一内容。
  • 对目标进行更改时:

    • 在更换文件夹之前,检查您的git工作副本是否干净(您已经提交或隐藏了在开发计算机上所做的所有更改)。否则,您可能会删除在本地计算机上所做的更改,但尚未提交。
    • 确保您已在本地计算机上签出了已部署到系统的相同提交。
    • 按照您现在的方式做事。删除工作副本中的该文件夹,但不删除工作副本本身。

    • 现在git statusgit diff会向您显示所有已更改的文件以及发生在其中的所有更改。

    • 根据需要提交。

这将帮助您将源代码置于版本控制之下,而无需将存储库本身放在嵌入式系统上。

您将获得系统中已更改的所有内容的完整差异,但您需要花费大量精力,确保您在双方都编辑相同的修订版。

现在,在每台开发机器上存储所有应用程序:

他们每个人都应该得到自己的git repo。如果您有在多个应用程序中使用的公共代码,git submodules可能是正确的解决方案。

有三个人在办公室一起工作,你应该有一个中央的git服务器。每个人都可以从那里克隆项目并拉/推更改它。如果您觉得您不会很快再次需要项目,可以从开发计算机中删除它。它在服务器上(如果您已推送所有更改)。

可能的选项包括:

  • 主持自己:
    • 藏匿
    • GitHub Enterprise
    • GitLab
  • 服务:
    • GitHub
    • 到位桶