在git clone之后,新repo中的配置如下所示:
remote.origin.url=remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* branch.master.remote=origin branch.master.merge=refs/heads/master
然后,我可以执行"git pull"和"git push".但我只对"git pull"感兴趣,因为我想推进另一个回购.
我能做的一件事是:
git add remote repo-for-pushgit push repo-for-push master
但我想配置git使用默认和不同的存储库进行拉取和推送,即:
git pull # pulls from origin git push # pushes into repo-for-push, avoiding accidental push into the origin
如何配置?提前致谢.
编辑:
基本上,我想设置默认的push repo与默认的fetch/pull repo不同.
好像
git config remote.origin.receivepack /bin/false
使推送到远程原点失败.
在1.6.4版本中,Git使用remote.name.pushurl
配置设置获得了从一个URL进行远程提取并推送到另一个URL的功能.如果push-repository没有跟踪pull-repository,我可以想象出奇怪的行为,但是我怀疑Git会尝试从当前/跟踪/匹配分支快速转发push-repository,而不考虑它是什么当它询问同名的遥控器时会拉.
例如,如果你想通过匿名git协议,但通过SSH推送(也许你需要一个SecurID令牌或某些东西进行身份验证):
[remote "myremote"] url = git://server/path pushurl = user@server:/path
我不确定你今天能用Git做到这一点.git-fetch(在builtin-fetch.c中)和git-push(在builtin-push.c中)的实现都调用内部函数remote_get(NULL)来标识pull-from/push-to的默认存储库.
一种选择是创建一个指定所需仓库的别名.例如:
git config --add alias.mypush "push repo-for-push"
然后你可以:
git mypush
推动你想要的回购.当然不完全是你想要的.(您也可以考虑使用--repo参数;请参阅http://kerneltrap.org/mailarchive/git/2008/10/7/3537694,了解最近的文档更新,其中阐明了--repo参数.)