git 分支
git 的分支,其实本质上仅仅是指向提交对象的可变指针
什么是提交对象:查看
要明白的核心要点是,分支本质是指针。
创建分支
创建分支其实是在创建一个指向当前提交对象的指针。
git branch testing // 创建名为testing 的分支
git checkout -b <newbranchname> //创建并切换分支
git switch -c <newbranchname> //创建并切换分支 switch 命令2.24.1才支持
查看各个分支的指向
git log --oneline --decorate
git log --oneline // 在高版本git不需要 --decorate 操作了。
切换分支
git checkout branchName
git switch master // 切换到master switch 命令2.24.1才支持
查看当前分支结构
git log --graph --all // --all是用来显示所有分支,
合并分支
git merge <newbranchname>
git merge --no-ff -m "merge with no-ff" dev // 禁用Fast forward 合并
分支管理
git branch // 列出分支
git branch -v //列出所有分支的上次提交
git branch -d testing //删除分支,
git branch -D testing //当 testing分支中有未合并的提交时,强制删除分支
远程分支
git ls-remote origin //获取远程分支列表
与给定的远程仓库同步数据
git fetch <remote>
在远程跟踪分支之上建立分支
git checkout -b serverfix origin/serverfix
跟踪远程分支
git checkout --track origin/develop // 本地新增 develop分支并跟踪远程 develop分支
git checkout serverfix // 如果远程有serverfix分支,且本地无此分支,会自动跟踪
查看设置的所有跟踪分支
git branch -vv
清理无效的远程分支
git remote prune origin
变基(rebase)
文档
你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。
rebase是用来合并分支的,当在两个不同的分支上都做了修改,可以使用rebase将一个分支上的修改合并到另外一个分支上。
将experiment rebase 到 master上
git checkout experiment
git rebase master
过滤部分分支
git rebase --onto master server client // client中过滤掉 server的部分,rebase到master
一句话 rebase:使用 git rebase <basebranch> <topicbranch> 命令可以直接将主题分支变基到目标分支
git rebase master server