首先,我了解与将内容推送到非裸 git 远程相关的“如何”,包括使用 git 配置选项 `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 ` 到非裸远程视为从远程获取 `git fetch` 的双重或本质相同?这样,我的本地工作目录可能过时(落后于)新内容,甚至可能有本地更改(提交前缀,甚至是已暂存/未暂存/已储藏/任何内容),但是该工作目录完全不会受到推送操作的影响?如果是这样,那么一旦在远程上,我就可以合并或重新基于或进行任何必要的操作。实际上,这正是这个 kernel.org git faq 条目所声称的。
这样做的动机与提出“如何”问题的其他人完全相同:由于{防火墙、nat、安全}原因,我没有任何简便的方法访问推送的“源”。
也许我缺少一些关于 git 如何跟踪事物的基本知识,“如果我只理解 XXXX”,我就会知道答案;请启发我。
这更像是一个关于 git 实现/表示/哲学问题。
为什么不能将 `git push ` 到非裸远程视为从远程获取 `git fetch
这样做的动机与提出“如何”问题的其他人完全相同:由于{防火墙、nat、安全}原因,我没有任何简便的方法访问推送的“源”。
也许我缺少一些关于 git 如何跟踪事物的基本知识,“如果我只理解 XXXX”,我就会知道答案;请启发我。
git pull
进行比较。您可能还会发现 https://dev59.com/53A75IYBdhLWcg3wYH3I 对于更多概念性的东西有用。直到我看到索引和暂存区,我才明白它的含义。在那之前,我只是一个愚蠢的 git。 - Michael DurrantFETCH_HEAD
而不是HEAD
。这个问题与此相同:以一种仅分离头部的方式进行推送将是不错的选择。对我来说,我只是想将更改集合存储起来。就像Git不能在不更新引用的情况下执行该操作一样... - binki