2

我遇到了一个奇怪的问题,我无法自己回答,尽管我已经使用 git 很长时间了。

git当单个文件被视为生产就绪时,流程需要标记单个文件。当其他文件也“准备好”时,它们也需要被“标记”。文件被首先标记可能会改变直到那一刻,但我们仍然需要能够一次检索所有“准备好的”文件。

如果可以在提交中标记单个文件,它会起作用,但事实并非如此。

你能给我任何线索,解决方法,我怎么能做到这一点:在几个提交中检索几个文件,通过单一标准链接在一起?

4

3 回答 3

1

出于这样的目的标记文件要求文件签入的分支不会更改,例如,如果分支上的某个版本被标记,然后分支是变基,那么标记仍将指向“旧”版本而不跟随到“新”分支。因此,对于“文件尚未交付”的情况,标记可能无法正常工作。

我认为更好的做法是创建一个特殊的production_ready分支,然后挑选您认为已准备好生产的更改到该分支上。这样,当实际“交付生产”发生时,您只需合并production_ready分支。

于 2013-02-21T17:00:43.547 回答
1

按您的要求,

使用 git 进行软件开发。git add .执行向索引添加新更改并根据需要将它们提交到您的存储库的正常git commit -m "commit message"过程。

在一天结束的时候,你会想让鞋帮开心,并将你当前的所有工作都签入到另一个 CM 系统。问题是该系统要求您标记/标记每​​个文件而不是“一组”文件。您可以通过在签入后立即使用与相应 git 提交的 SHAID 哈希匹配的标签(可通过键入 访问git log)标记旧 CM 系统中的所有产品文件来处理此问题。

这允许您对一组与特定 git 提交相对应的文件进行一对一的记录。

于 2013-02-22T11:06:30.587 回答
1

感谢 git 的灵活性,我们找到了答案!该解决方案有其自身的缺点,但它确实有效。

这个想法很简单。所有production-ready更改都将在单独的分支中进行跟踪,并且文件将不会通过与开发分支合并出现在那里,而是通过从中仅检出所需的文件。

尽管我们丢失了所有的前历史,但我们将获得如何一次性检索所有文件的production-ready简洁明了的方法。production-ready

在我们的辩护中,我可能会补充说,可以通过将提交消息添加到pre-production签出文件的提交的分支 id 中来解决这个历史问题。并且还可以通过扭曲简​​单的 git 命令来执行一系列需要的命令来简化该过程。

这些命令是:

git checkout pre-production

切换到pre-production分支。

git checkout development file/name

development分支签出所需的文件。

git commit -m "Moving file/name to pre-production from commit id 5364afb23"

提交并标记运动。

于 2013-02-24T11:10:12.667 回答