Git承诺保持本地化

问题描述 投票:0回答:4

我想知道是否有可能提交一些更改,如果我推送,这些提交不会被其他提交推送到远程分支。

例如:我有一些我需要进行测试的本地更改。像配置文件和一些json文件的一些更改。这些更改仅在此本地分支上需要,并且永远不应该在远程分支上。因此,当我创建一个提交时,我总是试图小心不要播放那些确切的文件,每次切换分支时我都需要隐藏并弹出这些更改。

所以我想知道的是,如果Git中有一种方法可以将这些更改保留在本地分支上而无需隐藏/弹出或取消它们。

git
4个回答
2
投票

有多种方法可以解决这个问题,但这取决于您本地修改的程度。

我们首先假设您的存储库中有一些配置文件。这些配置文件可能包含诸如本地主机名,连接字符串或类似数据库等内容。

在这种情况下,最好的方法是只提交模板配置文件。

例如,如果应用程序需要存在名为app.config的文件,但此文件包含此类文件,则您将提交名为app.config.template的模板文件。此文件不包含实际的主机名,用户名等,但最多包含您希望添加此信息的占位符。

然后,在您的构建脚本(或类似)中,您将看到如下所示的内容:

IF NOT EXIST app.config COPY app.config.template app.config

如果需要,这将在构建时从模板到真实文件创建一个新副本。

另外,你会指示git忽略真实文件:

# in .gitignore
app.config

现在,有时这还不够。它应该是,但有时它不是。

在这种情况下,不同的方法将使用额外的分支。让我们假设您正在开发一个名为develop的分支。

然后,您将首先为本地修改创建一个新分支:

git branch develop-local develop

然后你会检查这个分支,进行所有必要的本地修改,并提交以下内容:

git checkout develop-local
# hack hack hack
git add .
git commit -m "LOCAL modifications for test environment"

然后你会切换回真正的分支并处理一个案例:

git checkout develop
# work work work
git add .
git commit -m "Case #123, fixed bug in SQL parsing"

要测试这一点,请返回本地分支,合并真实分支并测试:

git checkout develop-local
git merge develop
# test test test

最后:

  • 从来没有推develop-local,只有develop
  • 永远不要将develop-local合并回develop

0
投票

是的,但这有点麻烦。

阅读文档中的7.6 Git Tools - Rewriting History


0
投票

我通常将我的项目配置为包括main.config和local.config等文件,只要它存在,然后以propper方式合并它们。那些本地文件当然是.gitignore。

取决于您的架构,关于.git/info/exclude的文章可以很方便


-1
投票

考虑使用假设不变:

指定此标志时,不会更新为路径记录的对象名称。

来自文档的git-update-index

git update-index --assume-unchanged app.config

这将阻止app.config被标记为已更改。

'temporarily ignoring files'可能也值得一读。

© www.soinside.com 2019 - 2024. All rights reserved.