使用 git 进行 pf.conf 版本控制的问题

Problems using git for pf.conf version control

我刚找到一份新工作,我的职责之一是管理几个 FreeBSD 机器 运行ning PF 作为数据包过滤解决方案。防火墙过去由一个人管理,但现在我们是 3 个人,可能同时修复相同的配置文件。我想使用 git 来处理本地副本中的更改请求,并在完成后将更改推送到服务器。这会给我:版本控制、快速回滚和冲突管理。 我启动了一个虚拟机进行测试,这是我到目前为止所做的。

运行 git init/etc/usr/local/etc 内 为两个本地回购在 /usr/home/myusername/config_sync/ 中做了 git clone

 git clone -l /etc etc@localhost<br>
 git clone -l /usr/local/etc usr_local_etc@localhost<br>

这就是我认为我能做到的:

改变pf.conf; 运行 git add pf.conf; 运行 git commit -m 'comment' 运行sudo git push

但这就是正在发生的事情。虽然我没有更改 /etc 中的 pf.conf 文件中的任何内容,但 git 承认远程提交但认为本地副本是一个较新的版本,可以撤消我所做的一切。

例如,如果我在工作副本中添加“#test”行并将其推送到 /etc,这就是 sudo git diff master 在 /etc 中向我显示的内容。

diff --git a/pf.conf b/pf.conf<br>
index 31c4c68..76d693b 100644<br>
--- a/pf.conf<br>
+++ b/pf.conf<br>
@@ -1,5 +1,5 @@<br>
 #MACROS<br>
-#test<br>
 #Hello from origin#<br>
 ##Firewall Interfaces<br>

这是因为当您推送到 /etc 中的存储库时,您的更改会进入存储库而不是工作副本。推送更改后,您必须从存储库分支中检出最新文件,否则上游存储库中的工作副本将不会更新。

给定 /etc 中的主存储库和 /home/me/etc_clone 中的克隆,您的工作流程可能类似于:

$ cd /home/me/etc_clone
$ vim pf.conf #make changes 
$ git add pf.conf
$ git commit -m "updates"
$ sudo git push
$ cd /etc
$ sudo git checkout -- . #sync working copy with index