git pull覆盖文件问题
git pull究竟干了什么
git pull 是将【远程仓库版本库中某个分支的更新】拉取到本地,并【与本地版本库对应分支的更新进行merge合并】
git fetch + git merge == git pull
如果当前本地的版本库对应分支的更新 >= 远程仓库版本库中该分支的更新,那么执行git pull会提示Already up to date.
明白了git pull的工作原理,现在看看下面几种情况会发生什么
-
本地仓库和远程仓库保持同步,处于一致的状态。然后在本地的working tree中修改/删除文件A,后执行git pull,执行完毕后文件A的修改/删除仍然存在,也就是说此时git pull未对文件A进行覆盖
因为在本地的working tree中修改文件A,文件状态是modified but not staged and not commited,本地仓库的版本库没有产生任何更新,本地仓库的版本库 = 远程仓库版本库,git pull会显示Already up to date. -
本地仓库和远程仓库保持同步,处于一致的状态。通过git add and git commit将文件A状态改为commited,执行git pull,本地仓库的版本库同样没有产生任何更新。因为Your branch is ahead of 'origin/master' by 1 commit.,本地分支比远程分支超前1个提交,本地仓库的版本库 > 远程仓库版本库
-
本地working tree有untracked的远程仓库对应分支的同名文件,git pull会提示untracked working tree files would be overwritten by merge.Please move or remove them before you merge.,git pull会被中止
网友评论