- 把当前修改隐藏
git stash
- 切换到BUG分支
git checkout <name>
- 创建并切换分支
git checkout -b <name>
- 切换到BUG分支
git checkout <name>
- 合并分支
git merge <name>
- 恢复工作区
- 查看工作区
git stash list
- 不删除stash
git stash apply stash@{index}
- 删除stash
git stash drop
- 恢复并删除stash
git stash pop
- 查看stash改动
git stash show stash@{index}
- 查看工作区
- 回退到上一个版本
git reset --hard HEAD^
- 回退到指定的版本
git reset --hard <commit_id>
- 回退保留本地修改
git reset <commit_id>
- 回退前
git log
- 回退后
git reflog
-
文件撤消
- 撤消保留修改
git reset <filename>
- 未commit撤消
git checkout -- <filename>
- 已commit撤消
git reset HEAD <filename>
- 已push后撤消
git reset --hard HEAD^
- 撤消保留修改
-
清除没有add的文件
- 删除所有未排除文件
git clean -df
- 查看哪些文件会删除
git clean -n
- 删除所有未排除文件
-
对比两个文件区别
git diff HEAD -- <filename>
-
删除文件
git rm <filename>
-
本地保留
git rm --cached <filename>
- 添加仓库地址
git remote add origin <url>
- 删除仓库地址
git remote rm <name>
- 克隆仓库项目
git clone <url>
- 查看仓库地址
git remote -v
-
创建分支
- 创建分支
git branch <name>
- 切换分支
git checkout <name>
- 创建并切换
git checkout -b <name>
- 创建无记录分支
git checkout --orphan <name>
- 创建分支
-
查看分支
git branch
-
合并分支
git merge <name>
-
删除分支
- 删除分支
git branch -d <name>
- 强行删除
git branch -D <name>
- 删除分支
-
获取分支
git checkout -b dev origin/<name>
-
推送分支
git push origin <name>
-
关联分支
git branch --set-upstream-to=origin/<remotename> <localname>
-
合并分支不生成merge记录
git pull --rebase
- 解决冲突
git rebase –continue
- 忽略冲突
git rebase –skip
-
创建标签
- 当前创建
git tag <tagname>
- 历史创建
git tag <tagname> <commit_id>
- 带说明的
git tag -a <tagname> -m "<message>" <commit_id>
- 当前创建
-
查看标签
git tag
-
删除标签
- 删除本地
git tag -d <tagname>
- 删除远程
git push origin :refs/tags/<tagname>
- 删除本地
-
推送标签
- 推送指定
git push origin <name>
- 推送所有
git push origin --tags
- 推送指定
- 克隆项目
git clone <url>
- 新建分支
git checkout --orphan <name>
- 添加所有
git add -A
- 提交修改
git commit -am "Initial commit"
- 强制删除
git branch -D master
- 更改分支
git branch -m master
- 提交分支
git push -f origin master
- 关联分支
git branch --set-upstream-to=origin/master
- 忽略文件
git update-index --assume-unchanged /path/file
- 取消忽略
git update-index -–no-assume-unchanged /path/file
- 统计超过1M的文件
git rev-list --objects --all \
| git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' \
| sed -n 's/^blob //p' \
| sort --numeric-sort --key=2 \
| cut -c 1-12,41- \
| grep -vF --file=<(git ls-tree -r HEAD | awk '{print $3}') \
| awk '$2 > 1048576' \
| $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest
- 删除文件
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch <filename>' \
| --prune-empty --tag-name-filter cat -- --all
- 回收垃圾
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now