【Git】本地分支

转载:https://www.cnblogs.com/yangchongxing/p/10221382.html

目录

=================================

1、查看分支列表

2、切换分支

3、删除分支

4、创建分支

5、合并分支

6、跟踪分支

7、创建跟踪分支

=================================

1、查看分支列表

本地分支

$ git branch
dev
* master

分支前的 * 字符:它代表现在所处的分支(也就是说,当前 HEAD 指针所指向的分支)。

远程分支

$ git branch -r
origin/master
origin/nb

所有分支(本地和远程)

$ git branch -a
* master
nb
remotes/origin/master
remotes/origin/nb

分支前的 * 字符:它代表现在所处的分支(也就是说,当前 HEAD 指针所指向的分支)。

分支名及校验和

$ git branch -v

已合并分支

$ git branch --merged
dev
* master

在这个列表中分支名字前没有 * 号的分支通常可以使用 git branch -d 删除掉;你已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。

未合并分支

$ git branch --no-merged
issue-

还未合并的尝试使用 git branch -d 命令删除它时会失败:

$ git branch -d issue-
error: The branch 'issue-1' is not fully merged.
If you are sure you want to delete it, run 'git branch -D issue-1'.

如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 -D 选项强制删除它。

$ git branch -D issue-
Deleted branch issue- (was 0734b29).

2、切换分支

$ git checkout dev

注意:分支切换会改变你工作目录中的文件

3、删除分支

$ git branch -d dev
$ git branch --delete dev

没有合并时无法删除,强制删除

$ git branch -d -f dev
$ git branch --delete --force dev

简写,Shortcut for --delete --force.

$ git branch -D dev

强制删除,没有合并也会删除,谨慎使用

4、创建分支

4.1、新建分支并留在当前分支

$ git branch dev

4.2、新建分支同时切换到新分支

$ git checkout -b dev

4.3、使用服务器分支,新建分支同时切换到新分支

$ git fetch origin 或者 git fetch
$ git checkout -b server_branch origin/server_branch

注意:git fetch 命令必须执行。执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

查看分支对象

$ git log --oneline --decorate

参数:--oneline,显示在一行

参数 --decorate,查看各个分支当前所指的对象

5、合并分支

5.1、快进合并

例:把dev合并到master,注意合并前其他分支都提交完了。首先切换到master分支,然后使用 git merge 命令把dev分支合并到主分支上

$ git checkout master
$ git merge dev
Updating 9525a36..1bfbd70
Fast-forward
book.java | +
file changed, insertion(+)

在合并的时候,你应该注意到了"快进(fast-forward)"这个词。 由于当前 master 分支所指向的提交是你当前dev提交的直接上游,所以 Git 只是简单的将指针向前移动。 换句话说,当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进(指针右移),因为这种情况下的合并操作没有需要解决的分歧——这就叫做 “快进(fast-forward)”。

5.2、典型三个快照的合并

$ git checkout master
$ git merge dev
Merge made by the 'recursive' strategy.
home.html | +
index.html | +
files changed, insertions(+)
create mode home.html
create mode index.html

和之前将分支指针向前推进所不同的是,Git 将此次三方合并的结果做了一个新的快照并且自动创建一个新的提交指向它。 这个被称作一次合并提交,它的特别之处在于他有不止一个父提交。

需要指出的是,Git 会自行决定选取哪一个提交作为最优的共同祖先,并以此作为合并的基础。 Git 的这个优势使其在合并操作上比其他系统要简单很多。

5.3、遇到冲突的合并

例:
master 分支编辑index.html内容如下,然后提交
index.html master
dev 分支编辑index.html内容如下,然后提交
index.html dev
合并

$ git checkout master
$ git merge dev
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

显示有冲突,编辑冲突文件

$ vim index.html
<<<<<<< HEAD
index.html master
=======
index.html dev
>>>>>>> dev

冲突内容使用<<<<<<<,=======,>>>>>>>完全隔开了。上半部分是HEAD也就是master分支,下半部分是dev分支。

$ vim index.html

手动解决冲突部分如下,然后 git add index.html

index.html master

然后提交 git commit -m '注解'

6、跟踪分支

6.1、查看分支跟踪

$ git branch -vv

6.2、设置分支跟踪

格式:二选一

git branch -u 远程库名/远程分支名

git branch --set-upstream-to=远程库名/远程分支名

$ git branch -u origin/dev
$ git branch --set-upstream-to=origin/dev

远程分支名必须存在,否则error: the requested upstream branch 'origin/b2' does not exist

6.3、取消分支跟踪

$ git branch --unset-upstream 本地分支名

7、创建跟踪分支

新建一个分支并且和远程分支建立跟踪关系

格式:二选一

git branch -t 本地分支名 远程库名/远程分支名
git branch --track 本地分支名 远程库名/远程分支名

$ git branch -t dev origin/dev
$ git branch --track dev origin/dev

【Git】本地分支的更多相关文章

  1. git 本地分支与远程分支

    github上已经有master分支 和dev分支 在本地 git checkout -b dev 新建并切换到本地dev分支 git pull origin dev 本地分支与远程分支相关联 在本地 ...

  2. git 本地分支与远程分支关联的一种方法

    github上已经有master分支 和dev分支 在本地 git checkout -b dev 新建并切换到本地dev分支 git pull origin dev 本地分支与远程分支相关联 在本地 ...

  3. Git本地分支版本号过低导致的push错误 error: failed to push some refs to ... 及兴许amend

    今天在用git的时候遇到了一个问题.在想远程分支push的时候,出现了以下的错误: ! [remote rejected] master -> refs/for/master (change 1 ...

  4. git本地分支与远程分支

    github上已经有master分支 和dev分支 在本地 git checkout -b dev 新建并切换到本地dev分支 git pull origin dev 本地分支与远程分支相关联 在本地 ...

  5. git 本地分支和远程分支改名字

    1.将本地分支进行改名: git branch -m old_branch new_branch 2.将本地分支的远程分支删除: git push origin :old_branch 3.将改名后的 ...

  6. Git本地分支和远程分支关联

    转载:https://blog.csdn.net/cherishhere/article/details/52606884 转载:https://blog.zengrong.net/post/1746 ...

  7. 怎么删除git本地分支以及Bitbucket的远程分支?

    1. 如果分支只是本地分支,则可以使用 -d (如果分支已合并),例如 git branch -d <branch name>如果分支包含不计划合并的代码,请改用 -D (即使有没有mer ...

  8. git本地分支和远程分支改名

    #1 将本地分支进行改名 git branch -m old_branch new_branch #2 将远程分支的老分支删除 git push origin :old_branch #3 将改名后的 ...

  9. git本地分支关联远程分支

    问题描述: 从远程master克隆下来以后, 在本地创建wf_dev分支, 此时执行git pull 操作出现图中问题. 这是因为:本地的wf_dev分支还没有和远程的wf_dev进行关联. 执行:  ...

  10. git本地分支重命名

    1. 本地分支重命名 git branch -m oldbranchname newbranchname 2. 远程分支重命名 (假设本地分支和远程对应分支名称相同) a. 重命名远程分支对应的本地分 ...

随机推荐

  1. Java编程思想——第14章 类型信息(二)反射

    六.反射:运行时的类信息 我们已经知道了,在编译时,编译器必须知道所有要通过RTTI来处理的类.而反射提供了一种机制——用来检查可用的方法,并返回方法名.区别就在于RTTI是处理已知类的,而反射用于处 ...

  2. ubunit 16 安装pip

    pip是一个用来安装和管理python包的工具.已经内置到python2.7.9和python3.4及其以上的版本里. python2.7执行: sudo apt-get install python ...

  3. three.js使用卷积法实现物体描边效果

    法线延展法 网上使用法线延展法实现物体描边效果的文章比较多,这里不再描述. 但是这种方法有个缺点:当两个面的法线夹角差别较大时,两个面的描边无法完美连接.如下图所示: 卷积法 这里使用另一种方法卷积法 ...

  4. 提高PHP性能效率的几个技巧!

    如何提高效率问题,往往同样的功能,不一样的代码,出来的效率往往大不一样. ● 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有ec ...

  5. Java流程控制之(二)循环

    目录 while循环 do..while循环 for循环 while循环和for循环基本概念--直接上代码! while循环 int i = 0; while(i<10) { System.ou ...

  6. SpringCloud Alibaba微服务实战一 - 基础环境准备

    Springcloud Aibaba现在这么火,我一直想写个基于Springcloud Alibaba一步一步构建微服务架构的系列博客,终于下定决心从今天开始本系列文章的第一篇 - 基础环境准备. 该 ...

  7. centos7环境搭建一台mysql服务器启动多个端口

    在一台服务器上启动多个mysql实例,分别用不同的端口号,因centos7版本安装mysql5.7后不存在mysqld_multi .mysqld_safe等命令,做踩坑总结 Mysql多实例实现的3 ...

  8. 【Android - 问题解决】之EditText自动获取焦点问题

    在Android开发中,如果界面中有EditText,那么它会自动获取焦点,后果就是会自动弹出软键盘. 解决这个问题的方法如下: 在EditText的父布局或界面的顶层布局中添加这样一个属性设置: a ...

  9. js鼠标划过事件

    js鼠标划过事件一般有两对 onmouseover/onmouseout onmouseenter/onmouseleave 区别: 1.onmouseover/onmouseout 鼠标经过自身会触 ...

  10. div水平垂直居中的六种方法

    在平时,我们经常会碰到让一个div框针对某个模块上下左右都居中(水平垂直居中),其实针对这种情况,我们有多种方法实现. 方法一: 绝对定位方法:不确定当前div的宽度和高度,采用 transform: ...