gpt4 book ai didi

git - 为什么非裸远程的 `git push` 不是远程的 `git fetch` 的对偶

转载 作者:行者123 更新时间:2023-12-05 07:54:30 29 4
gpt4 key购买 nike

首先,我了解与推送到非裸 git 远程服务器相关的如何,包括使用 git 配置选项 receive.denyCurrentBranch和其他变通方法,所以我在此处寻找答案:

这更像是一个 git 实现/表示/哲学问题。

为什么不能 git push <remote>到非裸 Remote 是双重的或与 git fetch <source> 基本相同从远程?这样,我在 Remote 上的本地工作目录可能已经过时(落后于)新内容,我什至可能有本地更改(提前提交,甚至暂存/未暂存/暂存/等等),但该工作目录完全未被推送操作触及?如果是这样,那么一旦在远程,我就可以 merge 或 rebase 或任何必要的。事实上,这正是 this kernel.org git faq entry 所声称的。 .

这样做的动机实际上与其他提出如何问题的人相同:由于{firewall,我没有任何方法可以轻松地从远程访问推送的“源” , nat, security} 原因。

可能我缺少一些关于 git 如何真正跟踪事物的基本知识,“如果我只理解 XXXX”,我就会知道答案;请赐教。

最佳答案

问题是推送会重写引用。 HEAD 是最新 checkout 的同义词,重写 ref 会悄悄地使工作树和索引无效——该 repo 中的提交将丢失推送的更改,没有迹象表明发生了这种情况。拒绝推送是最简单的解决方案。如果在目的地执行 git pull 不是一个选项,那么推送到一次性并修复引用:

git push origin master:fakemaster
cd $origindir
git checkout -B master fakemaster
git branch -D fakemaster

关于git - 为什么非裸远程的 `git push` 不是远程的 `git fetch` 的对偶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233581/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com