我的家庭服务器上有一个裸存储库,我从我的服务器上推送 笔记本电脑备份。由于新的路由器我不能再推了 在我的家庭局域网内使用全局URL(家庭服务器)到家庭服务器 与“NAT环回”有关,但需要使用本地LAN地址。所以我的 .git / config现在包含两个相同裸存储库的遥控器:
[remote "home1"]
url = ssh://username@my.url/home/username/git_bare_repos/repo.git
mirror = true
[remote "home2"]
url = ssh://username@192.168.1.74/home/username/git_bare_repos/repo.git
mirror = true
所以,问题:这可以吗?是否存在潜在的危险/陷阱?有没有更好的方法来做到这一点,所以根据我是否在家,我不必使用不同的命令?
答案 0 :(得分:2)
没关系。毕竟他们是同一个回购。
唯一不同的是,根据您当前的位置,您必须从一个遥控器或另一个遥控器推/拉/等。
Git为每个分支,标记,远程跟踪分支等保留一个引用。实际上,它们都是对提交的引用,它们在.git/refs/...
中有一个文件表示。
通过比较这些引用,git知道每个分支,标记等的状态。例如,如果您将refs/heads/master
与refs/remotes/origin/master
进行比较,并且分支不同步,则这些refs会有所不同。要找到哪一个过时,git可以只验证本地分支中是否存在远程提交,如果存在,则远程分支已过时。这也允许git告诉你本地分支在远程分支之前提交的提交数量,反之亦然。
可以找到更深入的解释here。
答案 1 :(得分:0)
假设您从home1
中提取最新信息,进行一些更改并将其推回。然后你从另一个地方做一些工作,然后把它们推到home2
。 Git不知道home1
和home2
是同一个存储库,但没关系。 Git看到home2
“某种程度上”已经将您之前推送的更改添加到home1
并且只是推动您的新更改。