git 操作常见问题集锦

1、刚刚git clone下来的项目,需要git submodule update --init --recursive
将依赖的子项目done下来,结果抛了个
(fatal: No url found for submodule path 'node-server' in .gitmodules)
''' 分析:为啥会抛错, 如提示, 检查下.gitmodules文件里是不是有node-server子
项目的配置内容,如果没有请加上对应的配置即可;如果不需要这个子项目,那么直接删除
node-server这个子项目文件即可. 与此同时还要删除关于node-server的缓存
(git rm --cached node-server), 然后再尝试git submodule update --init --recursive
即可; 如果子项目还是done不下来, 麻烦检查.gitmodules文件里指定的子项目地址是不是正确可用. '''

2、每次更新.gitmodules文件, 必须同步下(git submodule sync), 否则识别不到.

3、如何为一个项目添加一个子项目呢? git submodule add 项目地址, 然后push到
你的远程仓库(如gitlab/github啥的),你可以在项目里看到“子项目名+@+序列号”的链接.

4、如何删除submodule呢?  git rm  || git submodule deinit 

5、一旦依赖的子项目过多(比如100个), 如何批量操作呢?  git submodule foreach   
   eg: git submodule foreach git checkout master 
   # 该命令会按照.gitmodules里的path寻找所有的三方模块,并在每一个模块中都执行foreach后的命令
   eg: git submodule foreach git submodule update

6、更新了子项目, 那么父项目也需要更新. 即子项目属于父项目的一部分, 在子项目commit后, 父也需要.

7、如何将一个包含子项目的项目所有内容都clone下来呢? 当然第1条笔记也是可以的.
   git clone https://xxx.xx.xxx/xxxx/xxx.git
   git submodule init && git submodule update
   # 下面这一句的效果和上面三条命令的效果是一样的,多加了个参数  `--recursive`
   git clone https://xxx.xx.xxx/xxxx/xxx.git --recursive

8、git push的时候,遇到error: update_ref failed for ref 
'refs/remotes/origin/feature/financeTesting': cannot lock ref 
'refs/remotes/origin/feature/financeTesting': 'refs/remotes/origin/feature' 
exists; cannot create 'refs/remotes/origin/feature/financeTesting'
    # 上述报错提示了,远程feature分支已存在,不能创建feature/financeTesting分支,于是乎我们只要删掉远程分支即可.
    git branch -r -d origin/feature
    # 再次重新push, 报错消失; 上述操作针对远程feature分支已不存在或者代码没用的case
    


最后附上权威的文档链接:https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97

 

 

 

你可能感兴趣的:(软件应用)