【发布时间】:2021-10-08 04:37:12
【问题描述】:
我有一个具有这种结构的仓库:
/github_folder
|_A
|_B
所以有两个文件夹:A和B
我只在文件夹 A 中工作。 团队的其他人在文件夹 B 中工作。
我开始工作。 我进行拉取,进行更改,然后提交,然后推送。 一切都好。 这是由在文件夹 A 中生成新文件的自动过程完成的。
当我的自动过程未结束并尝试进行推送时,当另一个人使用文件夹 B 中的更改推送到存储库时,就会出现问题。 它说我有与 repo 不同的本地更改。
这是 git 的正常行为。
为避免这种情况,我尝试将 .git/info/exclude 与此内容一起使用:
B/
但问题仍然存在。
所以我在推送之前尝试了这个:
git update-index --skip-worktree <FILE>
对于文件夹 B 中的每个文件。
但问题依然存在。
如果我这样做:
git check-ignore <FILE_INSIDE_B>
我得到一个空的响应。
这样做:
git rm --cached <FILE>
不是解决方案,因为它会删除 repo 上的文件。
所以,最大的问题是:
push时如何将文件夹B的内容保留在repo中?
谢谢!
【问题讨论】:
-
B 的内容将始终是您在修改时所拥有的内容。所以,你的修订就是这样。 git 基本上要求您做的是获取对 B 所做的更改......这通常通过合并完成,但可以使用其他技术。你有不想合并的原因吗?
-
顺便说一句,这与 git 检查拒绝的文件内容无关。是改版。遥控器中有您的分支中没有的修订。这就是 git 告诉你的。
-
我不合并的原因是不需要与 B 一起工作。有些人告诉我,也许解决方案是使用 2 个存储库:一个用于文件夹 A,另一个用于 B ,但这对于在 B 中工作的人来说并不好,也只需要读取 A 中的内容。
-
鉴于
B/中的文件在存储库中,您必须使用它们。即使你从不检查它们(通过使用 Git 的“稀疏检查”模式),你仍然会使用它们:你永远不会看到它们,就像你使用它们一样。它们将在 Git 中不可见。