拉动本地回购时获取遥控器

时间:2013-01-24 13:32:23

标签: git git-clone git-remote

常见情况:

deployer$ git clone git://gitserver/project.git
deployer$ cd project
deployer$ ./deploy
Lots of errors!
deployer$ hack --until-it-works deploy
deployer$ git commit -m "fixed it" deploy

糟糕,现在我无法推送,因为deployment-account没有正确的密钥。所以,回到我自己的帐户。

larsmans$ cd /tmp
larsmans$ git clone /path/to/deployed/project
larsmans$ cd project

但现在我无法推送,因为遥控器未设置为原始克隆的遥控器。

larsmans$ git remote -v
origin  /path/to/deployed/project/ (fetch)
origin  /path/to/deployed/project/ (push)

我可以克隆本地目录并获取遥控器吗?我可以轻松地为此编写脚本,但也许Git内置了它。我在git-clone(1)中找不到相关选项; --mirror没有做到这一点。

1 个答案:

答案 0 :(得分:4)

这不值得编写脚本,因为每个项目(和人)最多只能执行一次这样的操作!

事实上,当你遇到这种情况时,你几乎肯定有一个本地存储库,不是吗?然后你要做的 last 是一个新的克隆。

相反,只需git remote add deployed /path/to/deployed/project现有的常规工作空间git fetch deployed并使用deployed/masterrefs/remotes/deployed/master)执行任何操作 - 您可以直接将其推送到{{1或者查看它或origin它或merge它或任何东西。

注意,如果你可以ssh进入服务器并在那里运行git(你可以在那里进行攻击),你也可以通过ssh协议git pull。并且它是高效的,因为ssh协议只是在远程端运行git并使用相同的git协议与它进行对话,只是它通过ssh进行隧道传输。所以在你的本地机器上,你应该能够merge --rebase;我希望git remote add deployed host:/path/to/deployed/projecthost配置完整的主机名,用户名和公钥,但.ssh/config也适用。

在生产服务器上,我建议切换回以前的版本,修复其他地方并再次推送以限制停机时间。在测试和预生产时,这当然没问题。