git - pull 本地仓库时获取 Remote

标签 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 没有正确的 key 。所以,回到我自己的帐户。

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

但是现在我无法推送,因为 Remote 没有设置为原始克隆的 Remote 。

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

我可以克隆一个本地目录并获得远程吗?我可以很容易地为此编写一个脚本,但也许 Git 已经内置了它。我在 git-clone(1) 中找不到相关选项; --mirror 没有成功。

最佳答案

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

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

相反,只需 git remote add deployed/path/to/deployed/project 在您现有的常规工作区中,git fetch deployed 并使用 做任何您想做的事deployed/master (refs/remotes/deployed/master) — 您可以将其直接推送到 origin 或 checkout 或 merge 它或 merge --rebase 它或任何东西。

请注意,如果您可以通过 ssh 进入服务器并在那里运行 git(如果您在那里进行 hack,则可以),您也可以通过 ssh 协议(protocol)从那里进行 git pull。而且它很高效,因为 ssh 协议(protocol)只是在远程端运行 git 并使用相同的 git 协议(protocol)与其对话,只是它通过 ssh 隧道传输。所以在你的本地机器上,你应该能够 git remote add deployed host:/path/to/deployed/project;最好在 .ssh/config 中配置 host,其中包含完整的主机名、用户名和公钥,但 user@host 的工作方式如下好吧。

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

关于git - pull 本地仓库时获取 Remote ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14502566/

相关文章:

git - 目录变成子模块后 merge

git - 如何从批处理文件将密码传递给 Git 命令

git - 从远程仓库中检索丢失的文件?

git clone 没有对象做 git log

git - 删除 Git 中单个文件的版本历史记录

git - 我如何在 git 中找到 origin/master 的位置,以及如何更改它?

Git 推送错误 : "origin does not appear to be a git repository"

git - 从 Bitbucket 历史中完全删除提交

windows - Git Windows 命令提示符在 Git 命令期间卡住(结束)

git - go-git等效于“git push --all <remote>”