说我有一个回购,我们称之为origin
。我将其克隆到另一个仓库working
。我做了一些更改(并在本地提交)。我现在想把它们推回origin
。
我对此的理解是git push
会说“不,origin
是一个工作副本,这将覆盖它”。我之前使用过选项(在origin
中)允许推送覆盖当前工作副本,从而允许推送。有没有办法(有或没有),允许推送添加到提交树,但不更新origin/master
或搞乱工作目录?
实际上,git push
是git pull
的反转(获取更新并更新工作目录); git fetch
(获取更新)的反转是什么?
答案 0 :(得分:2)
git pull
只是git fetch
+ git merge
。
对于推送,最佳做法是使用远程备份,因为如果您正在推送当前由远程非裸仓库检出的分支,则其工作树将不会更新,这意味着推送将被默认拒绝 如“Git push only for bare repositories?”中所述:
完全可以推送到非裸存储库中的任何其他分支。
这可能更接近您所寻找的内容:只需按下您的远程(非裸)回购当前未签出的分支。
答案 1 :(得分:1)
我对此的理解是git push会说“不,原点是 工作副本,这将覆盖它“。
那是错的。 git push
更像是“嗨,我得到了这些改变,你想接受它们吗?”如果遥控器中有未更改或拉到本地仓库的更改,则推送被拒绝。它永远不会在远程端进行合并--Git要求您获取/拉取更改,将它们合并到本地仓库中,然后推送。
git push -f
是另一个故事 - 它会覆盖遥控器中可能导致推送失败的任何内容。