我可以跟踪或添加一个在远程但不在本地目录中创建的文件的Git存储库吗?

时间:2017-04-26 18:34:55

标签: git git-remote

如果有一个直接添加到遥控器的文件,我从本地目录中推送的文件,是否有办法将该文件添加到遥控器中以便我可以拉取或获取遥控器并获取该文件或任何新文件?

这似乎是一种不好的做法,无论如何,但是让我们说在WordPress安装过程中添加了一个文件,比如WP将自动创建的wp-config,现在它已经在服务器上但是除非我用FTP或scp移动它,否则不在Git存储库中。发生这种情况时最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

我认为您提出的问题是,是否有办法让Git自动提交并推送新的更改?不,但您可以使用您喜欢的任何自动化工具来完成。但是,自动提交版本控制很少是一个好主意,您可能需要的是备份工具。

您在安装期间可能创建的配置文件的方案是滥用版本控制的一个很好的示例。该配置文件仅对该特定计算机有用。其他部署也将生成该文件。如果他们都试图推动他们的版本,它将产生合法的冲突。相反,请将中央存储库中的版本保持相当通用并从那里进行部署。

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

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

您可能有一个分支用于本地更改,并使用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]

如果可以在上游提交本地更改,例如错误修复或更改通用模板或图片,请使用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推送到中央服务器,请将其推送到为部署命名的分支。就像主机名或客户端一样。这仅用于存档目的。