| git init | 初始化空仓库 |
|---|---|
| git config --global user.name或者user.email | 设置用户信息 |
| git status | 查看当前状态 |
| git diff 旧 新 | 查看更改内容(可加参数-- 文件名) |
| git add | 跟踪文件(若对象为文件夹则跟踪文件夹中所有文件,如.;若对象为-A,则添加所有文件) |
| git commit -m "sth" | 保存一份当前所有跟踪文件的快照,注释为sth |
| git log | 显示commit日志,带参数--graph可显示图形,带分支作为参数可以查看该分支的日志 |
| git reset --hard <commit> | 将head指针调整为指向commit(commit可以输入哈希值或HEAD~1,HEAD^等) |
| 每个^表示向上一次,^num表示取多个父亲中的第num个 | |
| git revert <commit> | 生成一个新的commit,在其中撤销了<commit>对应的改动(此操作易产生冲突) |
| git rebase <commit> | 前提是commit不是head的祖先,将head及向前直到与commit分叉的地方,共同拷贝到commit下 |
| git rebase -i <commit> | 与直接rebase的区别是,可以自己选择排序 |
| git checkout <commit> | 可以切换到游离模式,来查看对应commit的文件 |
| git checkout <commit> -- 文件名 | 将单个文件改为commit中的状态,且不改变仓库状态;此时再进行commit操作可以改变仓库状态 |
| git checkout 分支名 | 切换分支 |
| git checkout -b 'new' <commit> | 在<commit>上创建一个新分支叫做new,并且切换到new分支 |
| git cherry-pick <commit> | 把<commit>对应的拷贝到目前的之后 |
| git branch 'new' <commit> | 从<commit>新建分支叫new,无<commit>参数则默认从当前版本新建分支new |
| git branch | 默认列出所有本地分支,加-a可列出远程分支(用remotes/表示) |
| git branch -f master <commit> | 把master分支的指向移动到commit上 |
| git branch -d 分支名 | 删除分支 |
| git branch -u origin/master 分支名 | 让origin/master追踪分支 |
| git cat-file -p <commit> | 查看<commit>的实体的内容 |
| git merge 分支名 -m sth | 合并分支,注释为sth |
| git merge --squash 分支名 | 合并分支,合并后的分支与被合并的分支无亲缘关系 |
| 在工作区根目录下创建一个名为.gitignore(没后缀)的文件 | 在其中配置你需要忽略的文件。如: .o .exe __pycache__ |
| git clone <远程连接地址> (<新建远程仓库名>) | 相当于先init,再remote add,再fetch,再checkout。克隆一个远程仓库到本地仓库的远程分支,默认把远程分支命名为origin/master。 |
| git remote add <远程仓库名> <远程连接地址> | 将远程仓库与本地仓库对接起来,本地出现远程分支。假设命名为origin,便可以用origin/master表示远程仓库中的master分支。 |
| git fetch <远程仓库名> | git远程是惰性的,用此命令手动拉取刷新(用远程仓库刷新本地仓库中的远程分支),不合并 |
| git fetch <远程仓库名> <远程仓库的分支名>:<本地分支名> | 用远程仓库的分支名刷新本地分支名,称之为place参数(冒号前的source参数为空时,则传空分支) |
| git push <远程仓库名> <本地分支名> | 将本地分支推送到远程仓库 |
| git push <远程仓库名> <本地分支名>:<远程仓库的分支名> | 把本地分支名推送到远程仓库的分支名 |
| git pull <远程仓库名> <本地分支名> | git fetch并merge,应用远程的修改(也可类似push和fetch加place参数) |
| git pull --rebase <远程仓库> | 如果fetch之后不想合并,而想类似rebase把HEAD拷贝到fetch来的远程东西下,可以加此参数 |
| fork(网页端操作) | 把别人的仓库复制一份到自己的账户下 |
| pull request(网页端操作) | 把自己账户下的修改提交给上游维护者,由他审核后并入他的远程仓库内 |
| git tag v1 <commit> | 给commit添加标签v1 |
| git describe <commit> | 描述如下:<tag>_<num>_g<hash>其中tag是最近的祖先标签,num是tag与commit的距离,hash是commit的hash值 |