关于git的问题?

场景1 (pull前)

一开始本地没有拉取远程最新的develop分支,但是远程develop分支已更新,在本地分支feature/update,使用git diff origin/develop,会出现几个版本杂糅的差异,

场景2 (pull后)

但是本地切换到develop分支后,并pull之后,再次切换到feature/update分支,使用git diff origin/develop,就不会出现几个版本的差异了

这是什么原因尼??

阅读 2.3k
2 个回答

你大概是以为 origin 开头的分支是和远端保持一致的了?

当你 git clone 一个仓库到本地之后,除了一个默认的本地分支(默认是 master,是可以配置的),还包含远端仓库在你 clone 的那一刻的 所有分支,tag.这个时候,origin 仅仅是你远端仓库的一个别名, 比如,你指定 https://github.com/test/test 为 origin, 这时你本地的 origin/develop 的意思是,你本地 git 仓库中 你从 github.com/test/test clone/fetch 时,远端 develop 分支在你本地仓库中的一个副本.

当你 本地 git pull 或者 git fetch 之后,做的事情就是把你的 origin/develop 和 远端仓库的 develop 分支进行一次同步(只是这个同步的意思,实际上会根据你的命令参数,会选择 merge 或者 rebase 的操作).这个时候,你本地的 origin/develop 就和远端仓库一致了.但是也仅仅是这一时刻,因为其他人可能会更新远端分支.导致你本地的 origin/develop 分支再次落后.

我明白你的意思,你可以做个试验,在断网的时候,去执行diff origin ,会不会执行成功?这里推荐下方幽灵的答案

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进