关于Git Pull命令对子模块更新及文件同步的疑问
Git Pull 相关问题解答
Q1:子模块远程更新后,本地执行Pull会同步子模块内容吗?
普通的git pull操作只会更新主仓库中记录的子模块提交哈希值,不会自动更新子模块内部的文件内容。也就是说,执行完git pull后,主仓库里子模块3的指针会指向队友更新后的远程提交,但你本地子模块3的目录里还是原来的旧内容,不会被自动覆盖。
如果要同步子模块的内容,需要额外执行:
- 进入子模块3的目录,执行
git pull - 或者在主仓库根目录执行
git submodule update --remote(这个命令会拉取子模块的远程最新提交并更新到本地)
注意:如果你的本地子模块3有未提交的修改,执行上述更新命令时会触发冲突,需要先处理本地修改(提交、stash或者放弃)才能完成同步。
Q2:远程删除文件后,本地Pull会删除对应文件吗?
这分两种情况:
- 如果本地那2个文件没有未提交的修改:执行
git pull后,Git会自动删除本地的这2个文件,让本地目录和远程仓库保持一致。因为git pull本质是拉取远程变更并合并,远程的删除操作会被合并到本地。 - 如果本地那2个文件有未提交的修改:Git会保留这些文件,不会自动删除,防止丢失你的本地改动。此时你需要手动判断是否要保留这些文件,或者用
git checkout命令重置到远程的状态来删除它们。
内容的提问来源于stack exchange,提问作者tadm123
相关产品推荐
相关产品推荐

