繁体   English   中英

Git:不要在Windows上更新某些文件

[英]Git: don't update certain files on Windows

我们使用的git仓库有20,000多个文件。

我的小组维护该存储库中大约100个左右的配置和源文件的本地版本。 原始内容是一种基础,多个小组可以根据自己的需要进行修改和调整(不允许更改某些核心内容,但是各个小组之间的前端和某些自定义DB内容有所不同)

因此,我们通常希望更新到最新版本,但不要让git update覆盖我们保留本地修改的文件。

我们使用的机器是基于Windows的。 当前,存储库被克隆到Windows服务器,然后被检出/克隆到开发机器(也是Windows)。 开发人员根据需要进行更改,然后重新提交给我们的本地仓库。 本地仓库每天都会针对主仓库进行更新。 我们从不退回主人。

因此,我们希望所有未由我们小组更改的文件都进行更新,但是任何(曾经)更改的文件都不会更新。

有没有一种方法可以使这种情况自动发生,因此Windows Server只是每天自动更新,而忽略了我们对其进行修改的文件。 而且,如果我们要向此“不更新”列表中添加新文件,只需单击鼠标右键(甚至是平面文件列表即可)。 我看着git-ignore,但这似乎是为了提交,而不是为了更新。

更好的方法是自动下载香草文件,但将其自动重命名。 例如settings.conf是一个我们通常希望保持更改的文件,但是如果它们修改了该文件中条目的处理方式或添加了其他选项,那么最好将其下载为settings.conf.vanilla或其他内容,只需对我们的.vanilla文件进行比较,看看我们要保留什么。 尽管此功能并非绝对必要,而且似乎不太可能。

如果无法在Windows机器上完成此操作(用于Windows的软件不支持此类功能),请列出一些Linux选项(如果有)。 如果需要,我们确实可以选择使用Linux服务器来托管本地git repo。

谢谢。

听起来您正在使用正在积极开发的第三方代码库,并且您需要应用自己的定制。

我认为您正在寻找的答案是rebase 您不需要编写任何外部逻辑来实现此目的,除了一项工作需要定期提取第三方更改并在这些更改基础上重新进行修改之外。

这也比不理会修改过的文件更正确,因为这样您就不会意外忽略第三方对这些文件所做的更改(您有时可能会遇到冲突,这可能会令人沮丧,但比默默地错过了重要的更改)。

假设您的本地存储库确实只是一个分支,请在自己的分支上维护您的更改,并且每次更新远程存储库时,只需在这些更改之上重新构建您的本地分支即可:

git pull origin master
git checkout custom_branch
git rebase master

编辑

你这样做之后,你会用你对你所做的所有更改最终custom_branch坐在上面master 然后,您可以继续在自己的分支上进行自定义,并且第三方代码的开发可以独立地继续。

下次您要进行其他更改时,将重复该过程:

在对第三方代码进行更改之前,请确保您位于master分支上:

git checkout master

引入更改:

git pull origin master

转到您的自定义分支:

git checkout custom_branch

将您的更改移至第三方更改之上:

git rebase master

然后,这会将您自己的所有更改再次置于 master 之上 master本身不会改变。

请记住,您的存储库的结构只是来自形成一棵树的整套“哈希”。 您的分支就像附加在特定哈希上的“张贴”便笺一样,并且随着分支的增长可以移动到另一个哈希中。

rebase就像砍了分公司,并重新连接到其他地方。 在这种情况下,您说的是“切断我们的更改并将其重新连接到主干顶部”。

如果您可以安装GitX之类的可视工具,那么在重新设置基准时,将真正有助于查看分支标签如何移动。 命令行是使用它的理想选择,但是我发现GitX之类的东西对于了解您的仓库结构非常有价值。

暂无
暂无

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

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