git add *
git commit -m ""
git push -u origin branch
在刪除某一些文件時, 應使用git add .
. 不然, 會出現Changes not staged for commit: ...
git
子模塊的操做必須很是當心, 由於其中有不少坑.github
git submodule add git://github.com/chneukirchen/rack.git rack
git rm --cached pathOfSubmodule
markdown
而後刪除_config.yml以及.git/config文件中相關記錄spa
進入子模塊所在目錄code
git add *
git commit -m ""
git push
咱們能夠直接像正常git文件同樣的流程進行提交, 可是若是咱們忘記提交子模塊的變更, 而新的項目和子模塊的變更又相關. 那麼其餘人從遠程倉庫中clone的文件可能並不能正確運行(缺乏必要的子模塊變更).rem
全部推薦使用如下兩種方法:
1. git push --recurse-submodules=check
. 如有子模塊的變更沒有推送, 那麼該push
會失敗.
2. git push --recurse-submodules=on-demand
. 如有子模塊的變更沒有推送, 那麼它會先推送子模塊的變更, 而後再推送主項目.string
其餘人若是對子模塊進行了修改, 在git pull
以後, 再調用如下git submodule update
更新子模塊.it
調用git submodule update
也更新子模塊的相關內容, 可是會將子模塊留在一個稱做 detached HEAD
的狀態. 這意味着沒有本地工做分支(例如 「master」)跟蹤改動。 因此你作的任何改動都不會被跟蹤。即便你使用了commit提交了一些變更, 在你下一次使用git submodule update
時, 這些變更會所有丟失.asm
因此須要進入每個你但願對其進行修改的子模塊,git checkout branchName
檢出一個分支. 從遠程倉庫中更新本地文件時, 使用git submodule update --remote --merge
, 也可使用--rebase
.ast
若是忘記了--rebase
或者--merge
, git會將子模塊更新爲遠程倉庫上的狀態, 並且該項目將再一次進入 detached HEAD
的狀態. 解決方法:
即便沒有提交子模塊的更改也某有問題, 此時git只會抓取更改, 而不會覆蓋本地內容.
克隆一個包含子模塊的項目.git clone
下來以後, 該子模塊並不會被clone下來.須要調用如下兩個命令:
1. git submodule init
來下載本地所需的子模塊配置文件文件
2. git submodule update
來下載主項目中列出的合適的子模塊提交
也可使用git clone --recursivegit clone --recursive https://github.com/...
自動地初始化並更新倉庫中的每個子模塊.