【问题标题】:How to add unchanged code in Git如何在 Git 中添加未更改的代码
【发布时间】:2015-06-24 21:20:14
【问题描述】:

我在工作中遇到了需要将情侣文件作为一个包添加和推送的情况。有一个特定文件没有代码更改(与主存储库相同)。 Git 无法识别该文件,因此我无法添加和推送。

【问题讨论】:

  • 我不认为有办法做到这一点,因为 Git 的工作方式(基于散列文件)。您可以在某处添加换行符。虽然我不完全明白为什么你需要一个推送来代表一个包。
  • 定义“不识别”。每个提交都是一个变更集。如果在此特定提交中该文件没有发生更改,则没有理由将该文件添加到提交中。如果可能的话,这将是一个空差异。
  • 为什么需要“推送”一个未更改的文件?它驻留在远程存储库中的版本已经是最新的。
  • 基本上我们想将我们的代码迁移为包或(在提交代码中)所以可能有一些代码没有改变但必须进入这个包,这样当我们在 UAT 中结帐时我们得到与该提交代码关联的所有文件。
  • 提交是完整的快照。它们是一个(有组织的)列表,列出了哪些内容在什么路径上。如果您想要的路径内容与签出提交在该路径中的内容没有变化,那么内容已经存在,它也将在下一次提交中,git add 无事可做。它已经完成了。新提交的签出会将内容放在该路径中。该提交的存档将在该路径包含该内容。

标签: git git-push


【解决方案1】:

您似乎误解了 Git 的工作原理。

提交和后续推送用于将您的更改添加到存储库并与您的开发人员共享它们。如果文件没有改变,你为什么要提交它?

如果您希望能够引用源树的特定版本,您可以使用 标签。标记为described in the Git documentation。这可能就是您要寻找的“包装”。

但是如果你想更好地控制什么被部署在哪里,你需要定义一个branching strategy


(来源:nvie.com

一种常用的策略是拥有一个开发分支和一个主(实时)分支。您在单独的功能分支中开发每个功能,从开发分支出来。如果完成了一项功能,则将该分支合并回开发中。此分支通常部署在保持最新状态的测试环境中。
当需要发布新版本时,您从开发中分支出发布分支。这是您的候选发布版本,它部署在验收环境中。它在那里进行了测试,并在需要时进行了错误修复。那些已修复的错误会重新合并到开发中。
准备好发布后,将发布分支合并到 master 中,使用适当的版本对其进行标记,然后将其部署到您的生产环境中。
修补程序遵循类似的路径,但从 master 分支,通常跳过候选发布阶段,并合并回 development 和 master,之后 master 被标记为新的次要版本。

【讨论】:

  • 嗨,我同意,但在我们的场景中,我们正在将包中的代码迁移到 UAT 和 PROD,而不是单个文件。因此,当我们在 PROD 中时,我们可以检查提交代码,我们将所有文件作为该包的一部分。我会看看标签。谢谢
  • @rohitawat 是的,标记正是针对您想要部署特定版本代码的场景。我会调整我的答案以更好地反映这一点。
【解决方案2】:

如果您没有对任何文件进行代码更改,则无需添加和推送该文件。

该文件已存在于您的存储库中,您的下一次提交不会影响该文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2014-10-19
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    相关资源
    最近更新 更多