繁体   English   中英

git push没有目标端合并(拉是获取,因为push是???)

[英]git push without a target-end merge (pull is to fetch as push is to ???)

说我有一个回购,让我们称它为origin 我把它克隆到另一个仓库, working 我做了一些更改(并在本地提交)。 我现在想把它们推回origin

我对此的理解是git push会说“不, origin是工作副本,这会覆盖它”。 我之前使用过选项(在origin )允许推送覆盖当前工作副本,从而允许推送。 有没有办法(有或没有),允许推送添加到提交树,但不更新origin/master或与工作目录混乱?

实际上, git pushgit pull的反转(获取更新并更新工作目录); 什么是git fetch (获取更新)的反转?

我宁愿考虑git push git fetch的反向。

git pull就是git fetch + git merge

对于推送,最佳做法是使用远程虚拟仓库,因为如果您正在推送当前由远程非裸仓库检出的分支,则其工作树将不会更新,这意味着推送将默认拒绝。
正如“ 仅针对裸存储库的Git推送? ”中所述:

推送到非裸存储库中的任何其他分支是完全可以的。

这可能更接近您正在寻找的内容:只需按下您的远程(非裸)repo当前检出的分支。

我对此的理解是git push会说“不,原点是工作副本,这会覆盖它”。

那是错的。 git push更像是“嗨,我得到了这些改变,你想带它们吗?” 如果遥控器中有未更改或拉到本地仓库的更改,则推送被拒绝。 它永远不会在远程端进行合并 - Git要求您获取/拉取更改,将它们合并到本地仓库中,然后推送。

git push -f是另一个故事 - 它会覆盖遥控器中可能导致推送失败的任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM