Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git忽略同步问题_Git_Github_Bitbucket - Fatal编程技术网

git忽略同步问题

git忽略同步问题,git,github,bitbucket,Git,Github,Bitbucket,在我的origin/master和origin/feature/xy分支中有一个文件,实际上是一个配置文件,我删除了它。我在本地删除了该文件,并将删除的更改提交到远程。当我查看bitbucket内部时,文件已进入origin/master 现在我希望该文件再次出现,因此我尝试再次创建该文件,并将其推送到origin/master,同时将文件名添加到.gitignore 所有这些的想法是将配置文件放在origin/master中,这样构建服务器可以使用其中的设置,但也可以防止origin/feat

在我的
origin/master
origin/feature/xy分支中有一个文件,实际上是一个配置文件,我删除了它。我在本地删除了该文件,并将删除的更改提交到远程。当我查看bitbucket内部时,文件已进入
origin/master

现在我希望该文件再次出现,因此我尝试再次创建该文件,并将其推送到
origin/master
,同时将文件名添加到.gitignore

所有这些的想法是将配置文件放在
origin/master
中,这样构建服务器可以使用其中的设置,但也可以防止
origin/feature/xy
分支覆盖
origin/master
上的文件。该文件应出现在
origin/master
上,并在创建的每个新分支中忽略。这些分支可能在文件中有自己的设置,但它们可能永远不会将本地更改推送到
origin/master

我怎样才能做到这一点?文件现在已不存在。

忽略规则(例如,.gitignore)功能无法满足您的需要;他们只做一件事:告诉git,如果未跟踪的文件与模式匹配,git应该假装它不存在

它不阻止路径的合并,也不阻止分支在路径上看到文件,或者诸如此类的事情。如果一个文件在回购协议中,即使其路径与忽略规则匹配,忽略规则对该文件根本不起作用

但你想怎么做呢

最完整的解决方案是在源代码管理之外为您的配置文件找到一个主页。您可以将文件保留在生成服务器上(如果未备份生成服务器,则可能是第二个位置),并将其从所有分支(包括master)中删除,然后将其添加到.gitignore中,这样就不会有人意外提交散乱副本

唯一不好的一面是,如果配置文件必须进化,以至于给定版本的源代码需要特定版本的配置文件,那么您将无法跟踪这种关系,必须使用其他机制来跟踪这种关系。但是,如果这个文件更改的主要方式是源代码的演化,那么首先将它与功能分支隔离可能不是最好的办法


另一个(部分)解决方案是使用git钩子拒绝任何更改文件的主文件合并。同样,这只能防止发生意外(因为您可能仍然需要一种方法来随时间修改master上的文件)。它不会阻止文件在分支上被看到

Git要么跟踪文件,要么不跟踪。如果您在不同的分支中修改跟踪文件并提交,然后将此分支合并到主分支中,则主分支将获得这些更改(或合并冲突,具体取决于场景)。另一方面,如果从master中删除该文件,然后创建新分支,则该分支将不具有该文件。如果您现在将该文件添加回master,则可以将其保留在master上,而无需额外的分支对其进行修改或删除。但是,如果您现在将master向上合并到另一个分支中,文件将返回。在什么情况下,我可以获得问题中描述的所需行为?