【问题标题】:Git. Ignore files when push does not take care of .git/info/exclude吉特。当推送不处理 .git/info/exclude 时忽略文件
【发布时间】: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 中不可见。

标签: git push pull


【解决方案1】:

有些人告诉我,也许一个解决方案是使用 2 个存储库:一个用于文件夹 A,另一个用于 B,但这对于在 B 中工作的人来说并不好,他们也只需要读取 A 中的内容。

这仍然是推荐的方法:

  • 主存储库,您在其中将 A 和 B 声明为子模块,其中 A 和 B 是它们自己的存储库,using git filter-repo
  • 每个子模块设置为track the main branch
  • 你可以在A工作,只推A
  • 您可以读取 B,因为父存储库会检查 A 和 B 子模块存储库。

【讨论】:

  • 感谢您的回答。在此更改之后,在 B 上工作的人需要在进行下一次提交/推送之前进行更改吗?
  • @JOINSO 在 B 上工作的人,如果他们需要 A,需要更新 A,以检查他们即将推送的 B 代码是否与最新推送的 A 一起工作。
  • 那么“排除”或跳过工作树选项呢?
  • @JOINSO 只要 A 和 B 属于同一个存储库,您就会遇到同样的问题。
【解决方案2】:

如果您要推送到A/ 的修改取决于B/ 的内容(例如:如果您提到的生成文件将B/ 中的一些文件作为输入),那么您需要更新B/ 的内容,重新开始你的一代。


如果您知道您的进程根本不依赖于B/,那么您可以在推送之前简单地更新B/ 部分。

您可以通过合并更新的作品来做到这一点:

git fetch origin
git merge origin/mainbranch

或将您的工作重新建立在更新的遥控器之上:

git fetch origin
git pull origin/mainbranch

如果您的本地分支设置为跟踪origin/mainbranch,则第一个等效于git pull,第二个等效于git pull --rebase
您还可以将git config pull.rebase true 设置为使git pull 始终表现为git pull --rebase

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多