如果没有旧git存储库的访问权限,如何使用新的远程git存储库?

时间:2014-12-29 11:59:39

标签: git

我有一个已部署的Web应用程序。该应用程序已从远程git存储库部署。现在,该存储库位于其他人的控制之下,我们无法访问它。我发现在服务器上编辑了一些文件;所以git status显示了一些未提交的更改。我想做的是 - 从我的机器上的服务器获取所有代码,执行git init,提交所有代码并推送到新的远程存储库,然后更新服务器以从这个新的repo中获取。

这是一种正确的方法吗?如果是,我如何处理服务器上与未提交的更改相关的问题?如何删除服务器上的跟踪到上一个repo并指向新的repo而不必拉,因为服务器现在有最新的代码?

2 个答案:

答案 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

最后,如果您想提交在您有权访问的存储库中完成的修改,您有两个解决方案:

  1. 直接从该存储库提交和推送。这是最简单的方法,但如果您没有在该服务器上使用的unix用户或配置,则可能是一个坏主意。
  2. 在本地计算机上克隆存储库(使用新远程计算机),然后在本地存储库上重现更改。承诺并推动。登录首先进行修改的服务器,丢弃它们并从新的遥控器中拉出。
  3. 注意:我觉得我的解释有点模糊,随意在评论中要求精确,我很乐意编辑我的答案!