在家时,git fetch origin master
应通过ssh连接到git@192.168.xx.xx
。
在旅途中,git fetch origin master
应通过ssh连接到git@xxx.linkpc.net
。
/etc/hosts
条目以委派ips为nice solution,但包括sudoing并输入root密码,这是一种单调乏味。origin
时都会委派正确的IP is ideal。有人可以使用一种解决方案来解决这个问题 - 通过各种手段 - 不应该被视为"一个hackish字符"?
答案 0 :(得分:1)
我打算给你一个提示,你可以制定解决方案。您可以将SSH config与Match
和exec
关键字一起使用:
匹配
限制以下声明(直到下一个Host或Match关键字)仅在满足Match关键字后的条件时使用。
...
exec 关键字在用户shell下执行指定的命令。如果该命令返回零退出状态,则条件为 被认为是真的。
答案 1 :(得分:1)
请记住,您正在通过SSH进行隧道传输,因此您的~/.ssh/config
会将每用户主机文件带回问题,例如,
Host dynamic-repo-host
HostName 192.168.xx.xx
#HostName xxx.linkpc.net
然后在
中修改origin
的网址
ssh config remote.origin.url git@dynamic-repo-host
适当地手动修改~/.ssh/config
,然后给出你想要的效果。
如果您想要一个完全不干涉的解决方案,请在Match
中使用~/.ssh/config
,但要执行的具体命令将取决于本地计算机运行的网络的详细信息。