Git push删除服务器上不在本地的文件

时间:2014-02-20 13:24:00

标签: git github push gitignore

问题:

我只有一个分支大师我克隆了存储库,我做了更改,提交-a -m“msg”并将它们推回去 - >网站更新。这没关系

但我可以通过网络表单将新文件上传到网站每次推送都会删除它们!

我尝试了googleing,搜索和阅读,但我显然不明白的东西,我已经添加了特定的文件夹给git忽略,他们在提交时被忽略,但推送明确删除了那些文件......

解决这个问题的正确方法是什么? (我知道我可以在每次推送之前进行克隆,但我想有一种更简单的方法和更合理的方式,使用某些组合的rebase fetch或其他东西......)

2 个答案:

答案 0 :(得分:1)

即使有可能在master中工作,如果有超过1个客户端在存储库上工作,这实际上是不可行的。在这种情况下,您的计算机和webform。创建功能分支可以让您更有效地工作。

C1--->C2--->C3--->C4--->C5<--master
                        |
                        origin/master

在使用某些功能或修补程序之前,您可以git checkout -b featurebranch创建新分支并进行更改。进行更改后,您可以使用git commit -a -m "msg"提交更改。

                          /--C7<--featurebranch
                         /
C1--->C2--->C3--->C4--->C5--->C6<--origin/master
                        |
                        master

因此,您将更改提交到功能分支,但现在要将分支合并回主服务器。但是,您远程进行了一些更改,origin/master现在指向您本地没有的提交。在主分支上,您可以git pull origin从远程获取+合并所有新更改,实际上获取 C6 并将主分支指针移动到 C6

                         /--C7<--featurebranch
                        /
C1--->C2--->C3--->C4--->C5--->C6<--master
                              |
                              origin/master

在此之后,您希望将功能分支提交重新应用到新主服务器上。所以你使用git rebase master featurebranch

                                /--C7<--featurebranch
                               /
C1--->C2--->C3--->C4--->C5--->C6<--master
                              |
                              origin/master

现在 C7 基于 C6 ,您只需在master上使用git merge featurebranch进行合并即可。由于存储库在推送之前处于同步状态,因此您将看到从Web表单添加的文件已删除。最后git push origin master

C1--->C2--->C3--->C4---->C5--->C6--->C7<--master
                                     |
                                     origin/master

答案 1 :(得分:1)

经过大量挖掘后,我设法在OpenShift论坛和堆栈上找到答案......不确定它是如何不早点出来的。

运行时修改将修改齿轮上的代码。由于这些更改绕过git,因此它们不受版本控制。在运行时更改后,您的本地仓库将不同步,因此建议您将这些更改检查到您的仓库并将其推回设备以跟踪这些更改。

长话短说:上传到服务器外部的文件提交/推送不受git 监控,之后被git覆盖。

解决方案:

1)如果您要上传文件,请将上传文件夹,ssh上传到您的应用中,并执行以下操作:

    ln -sf $OPENSHIFT_DATA_DIR/uploads $OPENSHIFT_REPO_DIR/php/uploads

在此之前还要确保使用mkdir制作uploads文件夹。

这将使该目录可公开访问,并且由于数据目录不受git控制,因此可以安全地推送数据。

2)

0)确保所有本地更改都是同步的 1)在运行时更改您的应用程序(如安装主题) 2)使用“rhc app snapshot save -a {appName}”拍摄应用程序的快照 3)使用snapshot.tar.gz中的文件覆盖所有本地repo文件(app_root / repo / *中的所有内容) 4)运行“git add”。在你当地的回购 5)然后运行“git commit -a -m”升级到3.4“和”git push“

更多信息:

https://www.openshift.com/forums/openshift/one-newbie-question

https://www.openshift.com/forums/openshift/php-uploads

https://www.openshift.com/page/openshift-environment-variables