在家里, git fetch origin master
应该通过ssh连接到git@192.168.xx.xx
。
在路上, git fetch origin master
应该通过ssh连接到git@xxx.linkpc.net
。
/etc/hosts
条目委托ips是一个很好的解决scheme,但包括sudoing和inputroot的密码是一种乏味。 origin
将委托正确的IP, 是理想的 。 一个人怎么可能用这个解决办法来解决这个问题?不要被认为是一个“黑客angular色”?
请记住,您正在使用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
,然后给出你想要的效果。
如果你想要一个完全的解决方案,可以在~/.ssh/config
使用Match
来查看,但是要执行的特定命令将取决于你本地机器运行的网络的细节。
我会给你一个提示,你可以制定解决方案。 您可以使用Match
和exec
关键字来使用SSH配置 :
比赛
只有满足匹配关键字后面的条件时,才能使用以下声明(直到下一个主机或匹配关键字)。
…
exec关键字在用户的shell下执行指定的命令。 如果该命令返回零退出状态,则该条件被认为是真实的。