【Git】Git常用命令——一篇文章带你玩转分支!

理解Git分支

使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线;完成这个支线的修改开发后,再将其合并到主线上。

 
 

Git分支基本操作

查看分支

查看所有的本地分支
git branch

查看所有的远程分支
git branch -r

查看所有的分支(本地分支+远程分支)
git branch -a

创建分支

git branch b1
git branch b2
以当前所在的分支为基础,创建新的分支,也就是说新分支把当前分支的内容复制到自己那里(继承过来)

切换分支

git checkout b1

将本地分支推送到远程分支

git push origin b1

合并分支

git merge b1
在master分支下执行该命令,含义是将b1分支合并到master分支

删除分支

如果被删除的分支未修改过:
git branch -d b1

如果被删除的分支已经被修改过:
git branch -D b1

上面其实删除的都是本地分支,我们这样删除远程分支:
git push origin -d b1

 
 

Git分支合并冲突问题

分支合并冲突是指,如果同名文件在两个分支中都被修改,那么当我们想要合并这两个分支时就会提示合并冲突。

首先,这是合理的。合并分支的常见作用,是把一个分支的更新同步到另一个分支上;但如果两个两个分支的同名文件都被更新的,Git就不知合并后该使用哪个版本了。

虽然发生了冲突,但这两个分支的这个文件,依旧会 强行合并 ,并成为 待修复文件 。这时便需要我们手动修改这个文件的冲突内容,再执行一次提交,该文件转化为正常文件。
 
复现一下:

假设此时存在两个本地分支——a和b,两个分支都拥有一个相同Loli.java文件:

public class Loli {
	private int id;
}

先切换到a分支,修改Loli.java文件并提交:

public class Loli {
	private int id;
	private String name;
}

再切换到b分支,修改Loli.java文件并提交:

public class Loli {
	private int id;
	private String loliname;
}

切换到a分支,给a分支合并上b分支,便复现了合并冲突。强行合并后的待修复文件如下:

public class Loli {
    private int id;
<<<<<<< a
	private String name;
=======
	private String loliname;
>>>>>>> b
}

对其进行修复后,再进行一次提交后待修复文件遍转化为了正常文件:

public class Loli {
    private int id;
    // 以a分支的版本为准
	private String name;
}

 
 

Git分支开发场景还原

你在开发一个网站。

你为了开发自己接到的新需求,创建一个分支(dev)开展工作。

突然,你接到一个电话说出现了很严重的问题需要紧急修补。

你连忙切换到线上分支(master),并为这个紧急修补创建了一个分支(fix)。

终于你完成了修补,便切换回线上分支(master),然后合并这个修补分支(fix),最后将此次改动推送到线上分支(master)。

尘埃落定。你切换回你最初工作的分支上(dev),继续工作。
 
完整过程:

# 你创建了一个dev分支开发新需求
git branch dev
# 假设你在开发中修改了hello.txt文件
git commit -a -m "修改了hello文件"

# 接到紧急修补,立马切换到master分支,在其基础上创建fix分支
git checkout master
git branch fix
# 切换到fix分支进行修补
git checkout fix
# 提交修补
git commit -a -m "修补了3.0线上版本的严重问题"
# 把修补分支合并到线上分支(一定要先切换回master分支再进行合并!!!)
git checkout master
git merge fix
# 将修补后版本推送给真正的线上分支
git push origin master

# 尘埃落定
git checkout dev

 
 
 
 

 
 
 
 

 
 
 
 

>_<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值