1.认识
★git如何保存数据 :每次提交之间的关联是提交对象中包含了前一次树对象的指针,这样层层关联
★分支本质:仅仅是指向提交对象的可变指针
2.分支命令
2.1 创建分支 :不同分支上的操作互不影响 (master只是git为你默认创建的一个分支,和自己创建的一样,只是名字不同)
git branch <branch-name> //创建分支
推送到远程服务器上:
git push origin <branch-name>
2.2 查看不同的分支
git branch -a //查看本地和远程的所有分支
git branch -r //查看远程分支
git branch -l //查看本地分支
git branch -v //查看每一个分支的最后一次提交
git branch --merged //查看哪些分支已经合并到当前分支 --no
★查看各个分支当前所指对象
git log --oneline --decorate
2.3 切换分支
git checkout <branch-name>
★原理 : 在 .git 文件夹中保存着一个名为HEAD的文件,其中记录着当前项目所在的分支
★创建并切换分支
git checkout -b <branch-name> //相当于两条命令,一条创建,一条切换
git checkout -b issue53 //创建 issue53分支并切换
2.4 合并分支
git merge <branch-name> //将当前所在的分支和 <branch-name>合并 ,简单将指针向前推进(fast-forward)
★合并有冲突的分支:按上面所述命令合并后,有冲突的文件会以未合并状态(unmerged)标识出来,使用git status 查看,然后手动解决,解决后用git add标示已解决
git status
git add
2.5删除分支
git branch -d hotfix //对于已合并的分支,删除分支hotfix
git banch -D hotfix // 对于未合并的分支 ,强行删除分支
2.6 推送 :将代码推送到远程服务器上
git push <remote-name> <branch-name>
git push origin master //推送到远程的origin服务器的master分支上
git push origin <local branch-name>:<remote branch-name> //本地和服务器上的分支名不同
git push origin servefix:remote-server //将本地的serverfix推送到远程的origin的remote-server上
2.7 拉取
git pull //相当于git fetch 然后 git merge
2.8跟踪分支
★从远程服务器上检出本地分支会自动创建一个跟踪分支(上游分支),git pull就是根据跟踪分支来向那个分支抓取
★检出并创建分支和其快捷方式
git checkout -b <local branch-name> <remote-name>/<branch-name>
git checkout --track <remote-name>/<branch-name> //创建并检出分支的快捷方式
i.e
git checkout --track origin/develop
2.9 删除远程分支
git push origin --delete serverfix //删除远程分支serverfix
2.10变基 rebase
★ merge :把两个分支的最新快照(C3、C4)以及最近的共同祖先(C2)三方合并,生成一个新的快照并提交 (记录实际发生过什么)
★★实现过程(test合并到master)
git checkout master //切换到master分支
git merge test //将test分支合并到master分支
★rebase:和merge的结果一样,但是能保证提交历史的整洁,就好像没有分叉一样,即和merge的提交历史不一样 (过程中发生的故事)
★★原则:未推送或者未分享给别人的本地修改执行变基操作
★★实现过程(test合并到master)
git checkout test //切换到test分支
git rebase master //将test分支和master分支所做的修改提取重新排列保存为临时文件,最后应用此文件
git checkout master //重新回到主分支,此时的文件已重新排序
git merge test //进行一次快进合并
3. 远程增加了一个分支,本地如何拉取
git branch -a // 是否可以查看到远程分支
git remote update //如果无法查看远程分支, 同步远程更新,使本地可见
git checkout -b branch-name origin/branch-name // 拉取分支并 切换分支
《以上为git 分支的相关操作,整理学习》,详情参看 :git官网文档