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/...
自动地初始化并更新仓库中的每个子模块.