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

Can I track or add to a Git repo a file that's created on a remote but not in local directory?

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

无论如何这似乎都是一种不好的做法,但是假设在 WordPress 安装期间添加了一个文件,例如 WP 将自动创建的 wp-config,现在它在服务器上但不在 Git 存储库,除非我用 FTP 或 scp 移动它。发生这种情况时,最佳做法是什么?

我想你想问的是是否有办法让 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]

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