我刚刚得到了一份新工作,我的责任之一就是管理两个作为包过滤解决方案运行PF的FreeBSD盒。防火墙以前是由一个人来管理的,但现在我们有3个人可能同时修复相同的配置文件。我希望使用git能够处理本地副本中的更改请求,并在完成后将更改推送到服务器。这将给我:版本控制,快速回滚和冲突管理。我启动了一个虚拟机进行测试,下面是我所做的工作。
运行git init did /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
但这就是正在发生的事情。虽然我没有在pf.conf文件中更改/etc文件中的任何内容,但git承认远程提交,但认为本地副本是一个较新的版本,可以撤消我所做的一切。
例如,如果我在工作副本中添加'#test‘行并将其推送到/etc,下面是母版在/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>发布于 2015-04-24 15:49:02
这是因为当您推到/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 indexhttps://stackoverflow.com/questions/29851153
复制相似问题