如何使用 git 仅在本地对文件进行版本控制
how to version files ONLY locally with git
我有一个项目有两个分支 foo
和 baar
。在这个项目中,我有一个配置文件 database1.properties
和 database1.properties
,其中存储了数据库属性,例如模式名称和模式密码。当我在 foo 分支上工作时,架构名称是 foo,密码是 foo,当我在 baar 分支上工作时,架构名称是 baar,密码是 baar。如何告诉 git 这些属性文件仅适用于我的本地系统,不应推送到原始存储库?我使用 egit 和 tortoiseGit.
对于单个分支,您无法阻止推送选定的文件。
推送分支时,所有提交都将推送到远程。
作为解决方法,您可以在不同的分支(foo-local
、bar-local
等)中进行更改(特定于本地),并且只要您希望在本地系统中进行这些更改,请使用 git merge local-branch --no-commit --no-ff
或类似命令合并到实际分支(这不会将您本地的特定更改合并到远程跟踪分支)。完成后,您可以放弃这些更改(但是这些更改将始终存在于本地分支中,并且可以随时应用于实际分支)。
方式 1 - 不断变基
假设有3个分支:
master
对于 public
boo
私人
baar
私人
像这样:
您在 master
分支上开发了一些东西,然后将 foo 和 baar 分支变基到 master 上。您需要 (1)Checkout foo
,(2)Rebase foo
到 master
,(3)Checkout baar
,(4)Rebase baar
到 master,那么它将变成:
注意:必须一遍又一遍地重复这些步骤。
方式 2 - 合并
假设相同的3个分支。
签出 foo
,并将 master
合并到 foo
:
在baar
分支做同样的事情,最后你会得到:
在master上开发了一些,再做一遍,得到:
方式 3 - 子模块
如果将所有分支推送到远程,以上两种方式有点危险。这种方式比较复杂,你需要知道如何使用子模块,但我更喜欢它。 :)
(1) 为私有数据库准备一个data repo,可以checkout foo
/baar
.
之间的分支
(2) 准备另一个 normal/simple 仓库作为容器,像这样:
(3) 然后将该数据仓库作为子模块添加到此仓库中:
提交后你会得到这些:
(4) 再次添加名为 test
的 public 存储库作为子模块:
现在,您可以在 test
存储库中进行开发,并检查另一侧数据存储库的任何分支。
注1: 要求调整好路径
注意2:如果你不喜欢submodule,你可以用一个文件夹作为容器,然后把这两个repo放进去。
方式 4 - 不提交或压缩的合并
正如(by @Royal Pinto)所说,我在这里展示了TortoiseGit操作。
注意:私有数据已暂存到索引文件中。以便下一个提交命令将其提交到 repo。
我有一个项目有两个分支 foo
和 baar
。在这个项目中,我有一个配置文件 database1.properties
和 database1.properties
,其中存储了数据库属性,例如模式名称和模式密码。当我在 foo 分支上工作时,架构名称是 foo,密码是 foo,当我在 baar 分支上工作时,架构名称是 baar,密码是 baar。如何告诉 git 这些属性文件仅适用于我的本地系统,不应推送到原始存储库?我使用 egit 和 tortoiseGit.
对于单个分支,您无法阻止推送选定的文件。
推送分支时,所有提交都将推送到远程。
作为解决方法,您可以在不同的分支(foo-local
、bar-local
等)中进行更改(特定于本地),并且只要您希望在本地系统中进行这些更改,请使用 git merge local-branch --no-commit --no-ff
或类似命令合并到实际分支(这不会将您本地的特定更改合并到远程跟踪分支)。完成后,您可以放弃这些更改(但是这些更改将始终存在于本地分支中,并且可以随时应用于实际分支)。
方式 1 - 不断变基
假设有3个分支:
master
对于 publicboo
私人baar
私人
像这样:
您在 master
分支上开发了一些东西,然后将 foo 和 baar 分支变基到 master 上。您需要 (1)Checkout foo
,(2)Rebase foo
到 master
,(3)Checkout baar
,(4)Rebase baar
到 master,那么它将变成:
注意:必须一遍又一遍地重复这些步骤。
方式 2 - 合并
假设相同的3个分支。
签出 foo
,并将 master
合并到 foo
:
在baar
分支做同样的事情,最后你会得到:
在master上开发了一些,再做一遍,得到:
方式 3 - 子模块
如果将所有分支推送到远程,以上两种方式有点危险。这种方式比较复杂,你需要知道如何使用子模块,但我更喜欢它。 :)
(1) 为私有数据库准备一个data repo,可以checkout foo
/baar
.
(2) 准备另一个 normal/simple 仓库作为容器,像这样:
(3) 然后将该数据仓库作为子模块添加到此仓库中:
提交后你会得到这些:
(4) 再次添加名为 test
的 public 存储库作为子模块:
现在,您可以在 test
存储库中进行开发,并检查另一侧数据存储库的任何分支。
注1: 要求调整好路径
注意2:如果你不喜欢submodule,你可以用一个文件夹作为容器,然后把这两个repo放进去。
方式 4 - 不提交或压缩的合并
正如
注意:私有数据已暂存到索引文件中。以便下一个提交命令将其提交到 repo。