2017-04-26 18 views
0

如果有一个文件被直接添加到远程文件中,我从本地目录中推送的文件,是否有一种方法可以将该文件添加到远程文件中,以便我可以拖放或获取远程文件并获取该文件或任何新的文件?我可以跟踪或添加一个Git仓库中创建的文件,而不是在本地目录中创建一个文件吗?

这似乎是一个不好的做法,不管怎么说,但假设一个文件是在WordPress安装期间添加的,就像WP自动创建的wp-config一样,现在在服务器上,但不在Git存储库中,除非我移动它与FTP或scp。发生这种情况时的最佳做法是什么?

回答

1

我想你问的是如果有办法让Git自动提交并推送新的更改?不,但你可以用你喜欢的任何自动化工具来做到这一点。但是自动提交版本控制并不是一个好主意,您可能想要的却是一个备份工具。

有关WP可能在安装过​​程中创建的配置文件的情况是错误使用版本控制的一个很好的例子。该配置文件仅对特定计算机有用。其他部署也会生成该文件。如果他们都试图推出他们的版本,它会产生合法的冲突。相反,请保持中央资源库中的版本相当通用,并从此处进行部署。

如果要记录每个部署的更改,请使用增量备份工具。


你可能会有什么是每个部署是一个克隆,但本地更改是在他们自己的本地分支上完成的。这个本地分支永远不会被推送(或者如果是,它仅用于存档目的)。如果您进行了一般适用于其他部署的更改(如错误修复),请将该更改推回原处。

您可能会有一个分支用于本地更改,并使用master将补丁推回。你可以在本地提交任何你喜欢的东西,包括生成的WP配置,它用于本地部署的更改。

   [origin/master] 
A - B - C - D [master] 
      \ 
       E - F - G [local] 

由于主控上游存在新的更改,请将它们取回并将其放在本地上方。

git checkout master 
git pull 

         [origin/master] 
A - B - C - D - H - I [master] 
      \ 
       E - F - G [local] 

git rebase master 


         [origin/master] 
A - B - C - D - H - I [master] 
        \ 
         E1 - F1 - G1 [local] 

如果有局部的变化可能被上游提交,就像一个bug修复或改变一个通用模板或图像,使用git cherry-pick复制只是单一的变化掌握和推动它。

git checkout master 
git cherry-pick F1 
git push 

          [origin/master] 
A - B - C - D - H - I - F2 [master] 
        \ 
         E1 - F1 - G1 [local] 

如果你真的想要把local到一个中央服务器,把它推到一个命名为部署分支。就像主机名或客户端一样。这将仅用于存档目的。

+0

谢谢@Schwern这提供了很多想法。这也让我思考图像或其他上传到远程,如PDF。看起来决定什么是关键要追踪的是关键以及独特之处。如果我正在进行本地开发,而我想在生产环境中进行镜像,反之亦然,我应该将文件下拉到我需要的本地计算机上,并将它们添加到版本控制中。这让我想到了也许我应该ssh看看Git在生产服务器上做了什么,可能会有用的添加文件,然后在本地拉。再次感谢! – kaplan

相关问题