git的分支是一个版本库。检出分支分支会影响暂存区和工作区的内容。
创建分支:git branch [testing]
检出分支:git checkout [testing]
创建并且检出分支:$git checkout -b iss54
检出分支之前最后将没有提交的暂存区暂存区和工作区提交,清空
检出分支会将工作区内容恢复外围检出某分支时它所指向的commit的快照
合并分支:
$ git merge [branch-name]
删除分支: $ git branch -d [branch-name]
合并冲突:
出现冲突:两个分支都针对同一文件做出不同修改
CONFICT :merge conflict in index.html
$git status差略合并的冲突文件
unmerged:index.html 冲突文件以unmerged状态列出
合并文件内容
1、<<<HEAD...
2、=====
3、>>>is553
1~2之间为原分支内容,2~3为新增分支的内容
分支管理:
$git branch 列出当前所有分支的清单 *所在表示当前所在分支
$git branch -v 查看各分支最后一次commit信息
$git branch --merged 查看哪些分支已经被合并入当前分支
$git branch --nomerged 查看尚未合并的分支
$git branch -D testing 强制删除分支
远程分支
远程分支(remote branch)是对远程仓库状态的索引
git push (远程分支名)(分支名) 提取本地分支并更新对应的远程仓库的指定分支
git fetch git fetch抓取远程分支信息,存在本地的远程分支缓存
将远程分支内容合并到当前分支: git merge origin/serverfix
从远程分支基础上分化新分支:git checkout -b serverfix origin/serverfix 这样分化出来的分支就是该远程分支的跟踪分支
跟踪分支:
从远程分支检出的本地分支被称为跟踪分支(tracking branch)。在跟踪分支里,git push 会自动判断向指定分支推送数据,git pull会自动获取所有远程索引
clone后的本地master分支就是一个跟踪分支
创建跟踪分支:git checkout -b [分支名] [远程名/分支名]
git branch -vv:查看所有的跟踪分支以及它们的跟踪对象
衍合
把一个分支整合到另一个分支的方法有两种:merge(合并)、rebase(衍合)
merge命令:把两个分支最新快照以及二者最新的共同祖先进行三方合并
衍合rebase:将c3的变化补丁重新再c4的基础上打一遍
git rebase [分支名]
git rebase --onto master server client 检出client分支,找错client分支和server分支共同祖先的变化,然后把它们在master上冲演一遍
$git rebase [主分支] [特性分支] ,会先检出特性分支,然后再在主分支上重演