Git – SSH – 主机:我怎样才能委托不同的IP到远程来源,取决于每次工作?

在家里, git fetch origin master应该通过ssh连接到git@192.168.xx.xx

在路上, git fetch origin master应该通过ssh连接到git@xxx.linkpc.net

可能的解决scheme

  • 为同一个存储库/分支有多个远程工作,但git跟踪多个头不必要的。 这个解决scheme只是与美丽混淆。
  • 分配一个主机名到远程和评论/取消注释/etc/hosts条目委托ips是一个很好的解决scheme,但包括sudoing和inputroot的密码是一种乏味。
  • 每个用户主机文件是不可能的。
  • 编写一个脚本,每次调用origin将委托正确的IP, 是理想的 。
  • 编写一个脚本,每次用户调用它时都会以root身份执行,似乎是一个公平的解决scheme 。

一个人怎么可能用这个解决办法来解决这个问题?不要被认为是一个“黑客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来查看,但是要执行的特定命令将取决于你本地机器运行的网络的细节。

我会给你一个提示,你可以制定解决方案。 您可以使用Matchexec关键字来使用SSH配置 :

比赛

只有满足匹配关键字后面的条件时,才能使用以下声明(直到下一个主机或匹配关键字)。

exec关键字在用户的shell下执行指定的命令。 如果该命令返回零退出状态,则该条件被认为是真实的。