PX4
    
     
      
       开发子模块不同步问题解决
      
     
    
   
    
     
      
       前提主分支为
      
     
    
    extension
    
     
      
       关联到远端库
      
     
    
    master
    
     
      
       分支
      
     
    
    A
    
     
      
       ,在此基础上,
      
     
    
    gitbranch
    
     
      
       建立
      
     
    
    extension_tasks
    
     
      
       分支,然后
      
     
    
    gitcheckout extension_tasks
    
     
      
       分支,并在其基础上进行开发,并将其推到另外一个远端库的另外一个分支。
      
     
    
   
    
     
      
       下面是用法解释:
      
     
    
   
     
      
       
       
      
     
     gitbranch
     
      
       
        和
       
      
     
     git checkout
     
      
       
        经常在一起使用,所以在此将它们合在一起
       
      
     
    
     
      
       
        
        
       
      
     
     
      1.
     
     
      
       Gitbranch
      
     
    
     
      
       
        
         
         
        
        
         一般用于分支的操作,比如创建分支,查看分支等等,
        
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       1.1git branch
      
     
    
     
      
       
        
         不带参数:列出本地已经存在的分支,并且在当前分支的前面用
        
       
      
     
     
      “*”
     
     
      
       
        
         标记
        
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       1.2git branch -r
      
     
    
     
      
       
        查看远程版本库分支列表
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       1.3git branch -a
      
     
    
     
      
       
        查看所有分支列表,包括本地和远程
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       1.4git branch dev
      
     
    
     
      
       
        
         创建名为
        
       
      
     
     
      dev
     
     
      
       
        
         的分支,创建分支时需要是最新的环境,创建分支但依然停留在当前分支
        
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       1.5git branch -d dev
      
     
    
     
      
       
        
         删除
        
       
      
     
     
      dev
     
     
      
       
        
         分支,如果在分支中有一些未
        
       
      
     
     
      merge
     
     
      
       
        
         的提交,那么会删除分支失败,此时可以使用
        
       
      
     
     
      gitbranch -D dev
     
     
      
       
        
         :强制删除
        
       
      
     
     
      dev
     
     
      
       
        
         分支,
        
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       1.6git branch -vv
      
     
    
     
      
       
        可以查看本地分支对应的远程分支
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       1.7git branch -m oldName newName
      
     
    
     
      
       
        给分支重命名
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       2.Git checkout
      
     
    
     
      
       
        
        
       
      
     
     
      1.
     
     
      
       
        
         操作文件
        
       
      
     
     
      2.
     
     
      
       
        
         操作分支
        
       
      
     
    
     
      
       
        
        
       
      
     
     
      
       2.1
      
     
     
      
       
        
         
          操作文件
         
        
       
      
     
    
     
      
       
        
        
       
      
     
     
      2.1.1git checkout filename
     
     
      
       
        
         放弃单个文件的修改
        
       
      
     
    
     
      
       
        
        
       
      
     
     
      2.1.2git checkout .
     
     
      
       
        
         放弃当前目录下的修改
        
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       2.2
      
     
     
      
       
        
         
          操作分支
         
        
       
      
     
    
     
      
       
        
        
       
      
     
     
      2.2.1git checkout master
     
     
      
       
        
         将分支切换到
        
       
      
     
     
      master
     
    
     
      
       
        
        
       
      
     
     
      2.2.2git checkout -b master
     
     
      
       
        
         如果分支存在则只切换分支,若不存在则创建并切换到
        
       
      
     
     
      master
     
     
      
       
        
         分支,
        
       
      
     
     
      repostart
     
     
      
       
        
         是对
        
       
      
     
     
      gitcheckout -b
     
     
      
       
        
         这个命令的封装,将所有仓库的分支都切换到
        
       
      
     
     
      master
     
     
      
       
        
         ,
        
       
      
     
     
      master
     
     
      
       
        
         是分支名,
        
       
      
     
    
     
      
       
        
         
         
        
       
      
     
     
      
       2.3
      
     
     
      
       
        
         
          查看帮助
         
        
       
      
     
    
     
      
       
        
        
       
      
     
     
      gitcheckout –help
     
    
     
      
       
        
         当然
        
       
      
     
     
      gitcheckout
     
     
      
       
        
         还有许多命令,但这些已经能满足我们日常开发所需
        
       
      
     
    
    
     
      
       所以这个时候
      
     
    
    extension
    
     
      
       和
      
     
    
    extension_tasks branch
    
     
      
       应该是同步的
      
     
    
   
    
     
      
       由于我已在
      
     
    
    extension_tasks
    
     
      
       上工作很久,两个分支完全不一样了,下面我将做一个测试
      
     
    
   
    
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       这个为
      
     
    
    extension
    
     
      
       分支,然后创建一个分支并切换过去。
      
     
    
   
    
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       
      
     
    
   
    
     
      
       现在两个分支完全一样。
      
     
    
   
    
     
      
       然后,开始处理
      
     
    
    extension_tasksbranch
    
     
      
       ,首先将分支关联回
      
     
    
    A
    
     
      
       分支的远端库,使用
      
     
    
    git branch –set-upstream-to=origin/A
   
    
     
      
       然后
      
     
    
    gitpull
    
     
      
       解决冲突,
      
     
    
    gitcommit
    
     
      
       ,发现还有子模块不同步的情况
      
     
    
   
fatal: no submodulemapping found in .gitmodules for path “xxx/xx”
    
     
      
       删除子模块:(分
      
     
    
    4
    
     
      
       步走)
      
     
    
   
1) $ git rm –cached [path]
    
     
      
       根据路径删除子模块的记录
      
     
    
   
    2)
    
     
      
       编辑“
      
     
    
    .gitmodules”
    
     
      
       文件,将子模块的相关配置节点删除掉
      
     
    
   
    
     
      
       清理子模块配置
      
     
    
   
    3)
    
     
      
       编辑“
      
     
    
    .git/config”
    
     
      
       文件,将子模块的相关配置节点删除掉
      
     
    
   
    
     
      
       清理子模块配置
      
     
    
   
    4)
    
     
      
       手动删除子模块残留的目录
      
     
    
   
    
     
      
       清理脏文件
      
     
    
   
    
     
      
       根据错误一步一步移除错误!
      
     
    
   
 
