当前位置:   article > 正文

GIT关于本地仓库从远程仓库 pull 的几个问题_从git仓库中拉项目会影响本地仓库的数据吗

从git仓库中拉项目会影响本地仓库的数据吗

在提出问题之前需要理解一下 pull 的底层原理,可以参考这篇博客:
详解git pull和git fetch的区别

然后提出几个在学习时的疑问,以及自己的理解(有些情况我没有实践,如有理解错误麻烦大牛指出):

  1. 如果从远程仓库 pull 到本地仓库的话,会不会覆盖工作区?
    答:工作区是会被覆盖的,所以在 pull 之前需要将未完成的工作存到 stash 中,避免被覆盖。不过一般情况都是需要 push 的时候才会 pull,在 push 之前显然都会 commit ,所以这种情况发生的概率不大。
  2. 为什么 pull 之后再 push 就不会出现冲突了?
    答:首先需要知道,git 是对 commit 敏感的,而不是对内容敏感的。pull 的本质是将远程仓库的内容合并到本地仓库中去,如果出现冲突需要人工解决冲突。那么在合并完成后,此时的 commit 一定是最新的,直接 push 到远程仓库就可以了。
    看下图:
    在这里插入图片描述

就比如现在远程仓库中有一个 dev1.0 分支,而你的本地仓库是 dev2.0 分支,现在你想要将 dev2.0 分支 push 到远程仓库中去,但是出现了冲突。所以你将 dev1.0 pull 到了本地仓库,并解决了冲突,最后生成了 dev3.0,此时再向远程仓库 push dev3.0,远程仓库就可以正常接收了。

远程仓库的视角来理解一下就是: 对于 dev1.0 和 dev2.0,我不知道他们之间的关系,我只知道他们有冲突,所以push失败。但是我知道 dev3.0 是 dev2.0 的一个后继,说明 dev3.0 比 dev2.0 的版本更新,所以可以替换。
3. 如果 pull 之后,后悔了怎么办?
答:因为 pull 操作实质上也是一种 commit,所以直接用 reset 回溯就可以了
4.接3,回溯时报错 git Unstaged changes after reset 怎么办?
答:参考 git Unstaged changes after reset

小结:

在多人协作,本地仓库向远程仓库同步时,需要遵循先 commit,然后 pull,最后再 push 的流程,养成一个好习惯

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/713055
推荐阅读
相关标签
  

闽ICP备14008679号