繁体   English   中英

忽略所有分叉中对Github中文件的更改,而不从存储库中删除文件

[英]Ignore Changes to a file in Github among all forks, without deleting the file from repository

我的github存储库中有一个config / auth.js文件(该文件有很多分支),我想忽略对该文件的任何进一步更改。 搜索后,我发现了以下三种方式,但是它们都不适合我:
1. git rm-已停止
这将删除文件。
2. git update-index-假定未更改的config / auth.js
这在我的机器上工作,但是每个贡献者都必须在他的fork上运行此命令(我不希望他们这样做)。
3. git update-index --skip-worktree config / auth.js
与案例2相同的问题
基本上我不希望其他人知道发生了什么,并且当同步他们的fork(rebase)时,文件中的更改将被自动忽略。

git rm --cached 

这将从索引中取消暂存文件。 它对存储库没有持久影响。

git update-index --assume-unchanged config/auth.js
git update-index --skip-worktree config/auth.js

如前所述,它们在您的本地索引上起作用,但是不共享(就像第一个选项一样)。

我认为您需要做的就是在存储库中将路径添加到.gitignore ,并提交.gitignore

由于.gitignore只是告诉Git在执行添加/提交时忽略路径,因此在添加/提交期间人们对本地副本所做的任何更改都将被忽略,您的副本也是如此。 因此,不应对文件进行任何更改。

同时, .gitignore并不是擦除文件现有历史的魔杖。 因此,它的当前状态应该保留在那里,并将保留在您的历史记录和git-log中。 您将无法再对其进行更改(除非已将其从.gitignore删除)。

任何解决您所要问题的方法都会有大量 “幕后的魔力”,并且随时可能出错。 我不推荐。

问题是,如果您想忽略他们对给定文件的更改,但又不想让他们看到您所做的任何影响,那么您肯定需要查看与提交不同的一组提交。 。 例如,如果您有

x --- x --- x <--(master)

他们克隆,所以他们有

x --- x --- x <--(origin/master)(master)

然后他们进行一些更改,包括对配置进行编辑,因此

x --- x --- x <--(origin/master)
             \
              O <--(master)

让您的仓库“忽略”对配置文件的更改意味着您最终将获得

x --- x --- x --- O' <--(master)

合并他们的更改后。 O' 一定是与O截然不同的提交。 客户期望在origin/master上看到O ,如果您向他们提供origin/master现在在O'处的“现实”,那的确会造成很大的破坏。

因此,为使事情正常运行,您必须存储O并代表master的上游指向O的fork。 鉴于您有多个分支,每个分支可能对自己的配置文件都有自己的更改,因此您必须:

1)为每个fork创建一个“ bridge”存储库,从而更改它们用于寻址您的远程URL,

要么

2)在您的源仓库中为每个分支保留一组独立的分支,要求分支配置适当的refspec。

因此,不可能真正使此更改“不可见”。 假设您希望这两个选项的“重量更轻”(我相信会是(2)),您最终会得到类似

x --- x --- x --- O <--(master)
             \
              O' <--(fork-a/master)

现在您必须使用钩子来自动对masterfork-a/master之间的更改进行重定fork-a/master (同时将配置文件中的更改从rebase中过滤掉)。 除了灾难的机会,我什么都看不到。

另一个选项(桥接存储库)看起来仍然与上面类似。 鉴于您实际上有很多分叉,它只会使任何回购情况都不会看起来更糟 我猜它可以构造更改在叉之间的流动方式,但是随后您必须在所有这些存储库之间进行协调。

我看不到任何一个真正的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM