【git】git的分支

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官网文档

 

 

 

 

 

 

 

           

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值