我有一个包含两个分支Rx-PlatformServices
和foo
的项目。在这个项目中,我有一个配置文件baar
和database1.properties
,其中存储了数据库属性,例如模式名称和模式密码。当我在foo分支上工作时,模式名称是foo,密码是foo,当我在baar分支时,模式名称是baar,密码是baar。如何告诉git这些属性文件仅适用于我的本地系统,不应该被推送到原始仓库?我使用egit和tortoiseGit。
答案 0 :(得分:3)
使用单个分支,您无法阻止推送所选文件。
当分支被推送时,所有提交都将被推送到远程。
作为一种变通方法,您可以在其他分支(foo-local
,bar-local
等)中进行更改(特定于本地),并且只要您希望在本地系统中进行这些更改,请使用git merge local-branch --no-commit --no-ff
或类似命令合并到实际分支(这不会将您的本地特定更改合并到远程跟踪分支)。完成后,您可以放弃这些更改(但是这些更改将始终存在于本地分支中,并且可以随时应用于实际分支。)
答案 1 :(得分:1)
假设有3个分支:
master
公开boo
私人baar
私人这样的事情:
你在master
分支上开发了一些东西,然后在master上重新设置了foo和baar分支。您需要(1)结帐foo
,(2)重新基础foo
到master
,(3)结帐baar
,(4)重新基础baar
到主人,那么它将成为:
注意:必须一次又一次地重复这些步骤。
假设相同的3个分支。
结帐foo
,并将master
合并到foo
:
在baar
分支上做同样的事情,最后你会得到:
在掌握了一些之后,再次执行这些步骤,并获得:
如果将所有分支推送到远程,上述两种方式有点危险。这种方式比较复杂,你需要知道如何使用子模块,但我更喜欢它。 :)
(1)准备私人数据库的数据仓库,您可以在foo
/ baar
之间签出分支。
(2)准备另一个普通/简单的回购作为容器,如下所示:
(3)然后将该数据仓库作为子模块添加到此仓库中:
提交后你会得到这些:
(4)再次,将名为test
的公共仓库添加为子模块:
现在,您可以在test
个仓库中进行开发,并检查另一边的数据仓库分支。
注1 :需要很好地调整路径。
注意2 :如果你不喜欢子模块,你可以只使用一个文件夹作为容器,然后将这两个repo放入其中。
正如this answer(由@Royal Pinto所说),我在这里展示了TortoiseGit操作。
注意:私有数据已经转入索引文件。这样下一个commit命令就会将它提交到repo。