首先,我了解与推送到非裸 git 遥控器的相关性,包括使用 git config 选项receive.denyCurrentBranch
和其他解决方法,所以我不是在寻找诸如这里的答案:
这更像是一个 git 实现/表示/哲学问题。
为什么git push <remote>
非裸遥控器的 a 不能是双重的或与遥控器的 a 基本相同git fetch <source>
?这样,我在遥控器上的本地工作目录可能已经过时(落后于新内容),我什至可能有本地更改(提前提交,甚至暂存/未暂存/隐藏/其他),但该工作目录完全不受推送操作影响?如果确实如此,那么一旦在遥控器上,我就可以合并或变基或任何必要的东西。事实上,这正是kernel.org git faq entry所声称的。
这样做的动机与其他提出“如何”问题的人一样:由于{firewall,nat,security}原因,我没有任何方法可以轻松地从远程访问推送的“源”。
可能我缺少一些关于 git 如何真正跟踪“如果我只理解 XXXX ”的基本知识,我就会知道答案;请赐教。