我有一个已部署的Web应用程序。该应用程序已从远程git存储库部署。现在,该存储库位于其他人的控制之下,我们无法访问它。我发现在服务器上编辑了一些文件;所以git status显示了一些未提交的更改。我想做的是 - 从我的机器上的服务器获取所有代码,执行git init,提交所有代码并推送到新的远程存储库,然后更新服务器以从这个新的repo中获取。
这是一种正确的方法吗?如果是,我如何处理服务器上与未提交的更改相关的问题?如何删除服务器上的跟踪到上一个repo并指向新的repo而不必拉,因为服务器现在有最新的代码?
答案 0 :(得分:1)
如果项目的历史记录(您表明是在其他人的控制之下)对您来说并不重要,那么只需从远程服务器复制所有代码并在您的项目上创建新的存储库机。
请记住,git存储库是一个分散的原子单元。所以当前在服务器上的git存储库(我假设这是你获得"未提交的更改"消息的地方)可以被忽略。
如果你在服务器上有SSH访问权 - 听起来像 - 你可以删除.git/' directory and then use
git init`来创建一个能够包含服务器上所有文件的新存储库
从那里,根据需要添加遥控器和PUSH。
答案 1 :(得分:1)
由于您似乎实际上可以访问该存储库的副本,因此我建议如下:
假设您可以访问的存储库(如果我理解的话,已部署的应用)可以通过ssh
上的user@production.com:/path/to/repo_folder
访问,并且您希望可以在user@development.com:/path/to/repo.git
访问新的远程数据库。
首先,在development.com
中克隆回购:
ssh user@development.com
cd /path/to
git clone --bare user@production.com:/path/to/repo_folder repo.git // This will create the folder "repo.git" which is a valid git repository without a working directory
您的新遥控器已设置,您现在可以更新已部署存储库上的跟踪遥控器:
ssh user@production.com
cd /path/to/repo_folder
git remote add new_remote ssh://user@development.com/path/to/repo.git
// Do the following two commands for every branch you want to be tracked on the new remote:
git fetch new_remote/master
git branch --set-upstream-to new_remote/master
最后,如果您想提交在您有权访问的存储库中完成的修改,您有两个解决方案:
注意:我觉得我的解释有点模糊,随意在评论中要求精确,我很乐意编辑我的答案!