@TOC
git init
git init
rm -rf .git
git add
git add <filename>
git add .
git reset HEAD <filename>
git reset HEAD~0
git commit
git commit -m "附加信息"
git reset
git reset
有--soft
、--mixed
、--hard
三种参数可选,其中--mixed
是默认方式,不同含义如下:
--soft
:只重置HEAD指针的位置--mixed
:重置HEAD指针的位置,并清空git add
命令的暂存区--hard
:重置HEAD指针的位置,清空git add
命令的暂存区,并重置工作空间所有的更改以下是git reset
的几种用法:
git reset <version>
git reset HEAD~1
git reset HEAD~1 <filename>
git reset HEAD~n
git clean
# 删除 untracked files git clean -f # 连 untracked 的目录也一起删掉 git clean -fd # 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的) git clean -xfd # 在用上述 git clean 前,强烈建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删 git clean -nxfd git clean -nf git clean -nfd
git rm
git rm <filename>
git status
git status
git reflog
git reflog
git log
git log
git branch
git branch <name of local branch>
git switch <name of local branch>
git branch
git merge <name of local branch> git merge --no-ff -m "附加信息" <name of local branch>
git branch -d <name> git branch -D <name>#强行删除,慎用
git submodule
git submodule add <URL of the submodule> <folder's name of the submodule>
使用此命令后,项目根目录下会自动添加.gitmodules
文件,用来存放子模块的信息;同时,也会自动下载子模块仓库的主分支最新版本并用指定名字的目录去装载,如果未给出指定的名字,则使用子模块仓库的默认名字。
使用子模块的意义在于便捷地引用其他人的库。如果你需要对别人的库进行自己的修改,那么你完全没有必要使用submodule
,因为你没有修改别人库的权限,你可以直接把别人的库克隆下来之后提交。如果你只是想使用而不需要更改,那么推荐你使用submodule
,这样的话,在提交时,主项目不会记录子模块的更改。
git submodule
git clone https://github.com/yyy/xxx.git --recursive
git submodule init git submodule update
这两个命令也可以合并为一个:
git submodule update --init
如果子模块又嵌套了子模块,则需要添加--recursive
参数
git submodule update --init --recursive
git pull
git submodule update --remote <name of the submodule which you want to update>
若不给出需要更新的子模块名字,则默认更新所有子模块。
拉取之后,记得提交主项目的更改。
先注销并清楚缓存:
git submodule deinit -f <submodule's name> git rm --cached <submodule's name>
然后检查子模块目录和.git/module
中的子模块条目是否删除:
rm -rf .git/modules/<submodule's name> rm -rf <path/to/submodule>
再检查配置文件中的子模块条目是否删除
gedit .gitmodules gedit .git/config
最后提交即可,示例如下:
git commit -m "Remove submodule"
ssh-keygen -t rsa -C "email@*.com"
git remote
git romote add <name of the remote repository> <SSH offered by the website>
git remote rm <name of the remote repository>
git branch --set-upstream-to <name of local branch> <name of the remote repository >/<name of remote branch>
git push
git push <name of the remote repository> <name of local branch>
git tag
git tag <name of tag> <version> git tag -a <name of tag> -m "附加信息" <version> #带说明信息的标签
git tag -d <name of tag>
git show <name of tag>
git tag
git push <name of the remote repository> <name of tag> git push <name of the remote repository> --tags #一次性推送所有标签
git push <name of the remote repository>:refs/tags/<name of tag>
git clone
git clone <URL>
git clone -b <name of remote branch> <URL>
git branch --set-upstream-to <name of local branch> <name of the remote repository >/<name of remote branch>
git pull <name of remote repository> <name of remote branch>:<name of local branch>
git commit -m "附加信息" git push <name of the remote repository>
git stash
git cherry-pick <version>
git stash list #列出贮藏列表 git stash apply stash@{n} #根据序号n恢复到指定工作现场 git stash drop stash@{n}#根据序号n删除指定工作现场
本文由博客一文多发平台 OpenWrite 发布!