【发布时间】:2015-09-22 21:01:11
【问题描述】:
首先,我了解与推送到非裸 git 遥控器相关的如何,包括使用 git config 选项 receive.denyCurrentBranch 和其他变通方法,所以我不 寻找诸如这里的答案:
- Git push error '[remote rejected] master -> master (branch is currently checked out)'
- Push to a non-bare Git repository
- Git pushing to non-bare repo, save current worktree
- Git: making pushes to non-bare repositories safe
这更像是一个 git 实现/表示/哲学问题。
为什么非裸遥控器的git push <remote> 不能与遥控器的git fetch <source> 双重或基本相同?这样,我在遥控器上的本地工作目录可能已经过时(落后于新内容),我什至可能有本地更改(提前提交,甚至暂存/未暂存/隐藏/其他),但该工作目录完全不受推送操作影响?如果确实如此,那么一旦在遥控器上,我就可以合并或变基或任何必要的东西。事实上,这正是this kernel.org git faq entry 所声称的。
这样做的动机与其他提出如何问题的人完全相同:由于 {firewall , nat, security} 原因。
可能我缺少一些关于 git 如何真正跟踪“如果我只了解 XXXX”的基本知识,我会知道答案;请赐教。
【问题讨论】:
-
可能与
git pull相比更多。您还可能会发现 stackoverflow.com/q/3329943/631619 对于更多概念性的东西很有用。直到我看到索引和暂存区域,我才自己“得到”它。在那之前,我只是一个愚蠢的 git。 -
感谢您的指点,迈克尔。那里有一些有用的信息,而且写得很好,但这并不是我要问的。我试图具体了解为什么在推送到非裸远程时必须更新工作树。至少我认为这是正确的问题。
标签: git git-push git-fetch git-non-bare-repository