[TOC]
1、本地分支管理
1.1.、创建本地分支
git checkout --track origin/分支名
git checkout -t origin/分支名 //跟踪远程分支
git checkout -b <分支名> origin/<分支名> //不跟踪远程分支
1.2、删除本地分支
1.2.1、删除本地指定分支
git branch --delete --force <分支名>
git branch -D <分支名>
1.2.2、删除所有本地分支
git branch | xargs git branch -D
1.2.3、删除远程分支已经被删除的本地分支
git remote prune origin
1.3、修改本地分支名
git branch -m <老分支名> <新分支名>
1.6、从本地分支移除未追踪的文件
git clean -f -n //显示将被移除的未追踪的文件,并不实际移除。
git clean -f //移除未追踪的文件。
git clean -fd //移除未追踪的文件及文件夹。
git clean -fX //移除被忽略的文件。
git clean -fx //移除被忽略和未被忽略的文件。
2、远程分支管理
2.1、创建远程分支
//将本地分支推送到远程(远程分支不存在,相当于创建远程分支)
git push -u origin <本地分支名>:<远程分支名>
git push origin <本地分支名> <远程分支名>
// 更改本地分支与远程分支对应关系
git branch --set-upstream-to=origin/<分支名>
2.2、删除远程分支
git push origin --delete <分支名> //git 1.7以后
git push origin :<远程分支名>
2.3、 整理远程分支
git remote prune origin --dry-run
2.4、同步远程仓库
git remote update
2.5、修改远程仓库地址
git remote set-url origin [新地址]
3、日常操作
3.1、提交之前撤销git add
git reset <文件名>
git reset [.] //.可选
3.2、回滚
3.2.1、回滚本地代码
术语解释:
HEAD:当前分支版本顶端的别名
Index/Stage:也被称为暂存区(staging area),存储被跟踪但是还未提交的修改。
Workspace:本地工作目录。
git reset --hard HEAD~1 //当前分支HEAD=HEAD~1,同时同步更新Index,Workspace。 (相当于完全回滚一次提交)
git reset --soft HEAD~1 //当前分支HEAD=HEAD~1,Index,Workspace内容不变。(相当于执行了git add,但是未执行git commit)
git reset --mixed HEAD~1 //当前分支HEAD=HEAD~1,Index内容更新,Workspace内容不变。(相当于只修改了Workspace)
3.2.2、公司回滚代码
git fetch //同步远程仓库信息到本地
git checkout <分支名> //切换到工作分支
git pull <分支名> //将远程分支内容同步到本地(因已发布,远程分支为最新)
git reset —soft origin/master //将当前分支HEAD设置为远程master(因为远程master已回滚)
git commit -am "" //重新提交修改。
git push //将修改推送到远程。
3.3、子模块submodule
3.3.1、添加子模块
git submodule add https://github.com/VundleVim/Vundle.vim.git <子模块路径>
git submodule init
git submodule update
3.3.2、删除子模块
git submodule deinit <子模块路径>
git rm <子模块路径>
//如果想彻底从本地工作目录移除子模块,执行以下命令
git rm --cached <子模块路径>
rm -rf .git/modules/<子模块路径>
3.4、暂存修改
git stash //暂存
git stash pop //恢复暂存
git stash list //查看暂存列表
git stash save "describe it" //给暂存一个名字
git stash clear //删除一个暂存提交
git stash save --keep-index //仅暂存unstaged文件
4、其他操作技巧
4.1、分支太多清理步骤
git remote update // 同步远程分支
git remote prune origin --dry-run //整理远程已删分支
git remote prune origin //删除远程已删分支
git branch | xargs git branch -D //删除本地所有分支
4.2、查看分支依赖关系日志图
git log --graph --color --decorate --oneline --all //查看所有分支
git log --graph --color --decorate --oneline [分支名] //查看指定分支