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 <submodule-name> || git submodule deinit <submodule-name>

5、一旦依賴的子項目過多(比如100個), 如何批量操作呢?  git submodule foreach <command>  
   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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章