git学习之本地分支与远程分支

Git是目前最先进的分布式版本控制系统,常被用于代码版本管理。在实际使用中,分支是Git一个十分常用的特性,相较于其他版本控制系统(Version Control System, VCS ),git的分支管理十分轻量且快速。这主要得益于其底层的设计,很多旧的VCS的分支是对某个版本的整个拷贝,因此新增、删除、更改分支的速度十分缓慢;而Git的分支实际上是一个指向某个版本的指针,对分支的增删改操作就相当于对指针的增删改,因此十分快速轻量。

git是分布式的,每一份clone都是一个完整的版本库,因此可以把当前设备上的clone称为本地,而其他设备上的clone称为远程。但在实际协作时,并不会直接与同伴的电脑互为远程来同步代码,而是有一台“中央服务器”作为大家共同的远程,方便存储并交换大家的修改,像github、gitlab、gitee等网站就是提供了这种基于Git的远程托管服务。

本地分支就是本地Git仓库里的一个指针,指向某个提交

远程分支是远程仓库里的一个指针,指向远程仓库中的某个提交

远程引用是本地对远程的引用,包括分支、标签等等。

远程跟踪分支就是本地对远程分支的引用,是本地的一个指针,一旦进行了网络通信,git就会移动它们以精确地反应远程分支的状态。远程跟踪分支的命名形式为/

跟踪分支是让本地的一个分支branchA与远程跟踪分支origin/branchB关联起来,这样在本地的branchA上执行git push/pull时,git就知道了该推送/拉取远程的哪个分支了。

常用操作

  1. 新建一个本地分支feature1。即在当前版本上新建一个分支,也就是新增一个指向当前版本的指针
git branch feature1
  1. 切换到feature1分支。改变HEAD的指向至对应的分支;HEAD是git中一个特殊的指针,它永远指向本地的当前活跃分支,因此在本地切换分支就相当于改变HEAD的指向。
git checkout feature1
  1. 新建并切换到分支feature1,操作1和2可以合并成一个步骤
git checkout -b feature1
  1. 还可以将feature1推送到远程
git push origin feature1

这样远程就会新增一个名为feature1的分支,并且本地的feature1会自动跟踪远程的feature1

5.如果不想让远程的分支也命名为feature1

git push origin feature1:feature1_o

这个命令意为将本地的feature1分支,推送到远程,在远程的分支名为feature1_o,并跟踪之

可以发现上个命令其实是git push origin feature1:feature1的简化

  1. 合并分支。在feature1上做了一些修改提交后,还可以将提交merge到主分支
git checkout master  // 先将当前分支切换为master
git merge feature1 // 再将feature1合并进当前分支

合并feature1上的提交后,如果想将这些提交同步到远程的master,则可以执行 git push origin master将本地合并的提交推送到远程

  1. 在feature1分支合并后,还可以再删除分支feature1
git branch -d feature1
  1. 如果未执行合并便删除分支,git会提示错误error:分支'feature1' 没有完全合并,如确定要删除,可使用-D强制删除
git branch -D feature1
  1. 同样也可以删除远程分支
git push origin :feature1_o

这里其实运用了个小技巧,将本地的“空”推送到远程的feature1_o分支,也就是删除了远程feature1_o分支

原文地址:https://www.cnblogs.com/nuannuan7362/p/13512753.html