git 指令备忘
总是记不住命令,每次都要搜索。自己记录一下,方便查找。
git reset
将本地仓库恢复至指定 commit 的状态。
commit 记录和文件都会丢失。
1 | git reset --hard fjf88323horjs2eofu23u03ji332uio532u4io32 |
将本地仓库恢复到 git add
之前的状态。
修改的内容会保留在工作区中。
1 | git reset fjf88323horjs2eofu23u03ji332uio532u4io32 |
恢复到 git commit
之前(即 git add
之后)的状态。
即修改的内容被暂存,但未提交。
1 | git reset --soft fjf88323horjs2eofu23u03ji332uio532u4io32 |
git pull
从远程获取分支,并且与本地分支合并
简单来说,git pull 相当于 git fetch + git merge
(实际上有差别)。
以下两个命令等效(默认设置下),拉取 origin 并合并
1 | git pull |
拉取远程仓库的 main 分支,并与当前分支合并
1 | git pull origin main |
拉取远程仓库的 main 分支,并与本地的 dev 分支合并
1 | git pull origin main:dev |
git remote
管理远程分支
添加一个名为 up 的远程分支
1 | git remote add up [email protected]:mdn/content.git |
将名为 up 的远程分支改名为 down
1 | git remote rename up down |
删除名为 down 的远程分支
1 | git remote remove down |
git submodule
删除子模块
网上很多文章写的 要删除这个文件、编辑那个文件,把步骤搞得很复杂。
其实并不需要,实际上只需要三步。
取消注册子模块
1
git submodule deinit submodulePath
此时,子模块从你的工作区以及
.git/config
中移除了,并未从配置中移除。
此时可以通过git submodule init
,git submodule update
重新加载子模块.从工作区和暂存区删除子模块
1
git rm -r submodulePath
此命令会同步删除
.gitmodules
内的相应内容.删除
.git/modules/
内的相应内容
增加子模块
1 | git submodule add <repo> <path> |
这时会增加子模块的配置,以及克隆子模块到本地。
加载子模块
克隆父仓库时是不会加载子模块的,一般需要手动加载。
1 | git submodule init |
更新子模块
当子模块有更新,需要更新时,执行
1 | cd submodulepath |
编辑子模块
子模块实际上就是一个完整的仓库。进入子模块的目录,按照正常流程操作即可。