赞
踩
使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线;完成这个支线的修改开发后,再将其合并到主线上。
查看分支
查看所有的本地分支
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就不知合并后该使用哪个版本了。
虽然发生了冲突,但这两个分支的这个文件,依旧会 强行合并 ,并成为 待修复文件 。这时便需要我们手动修改这个文件的冲突内容,再执行一次提交,该文件转化为正常文件。
复现一下:
假设此时存在两个本地分支——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;
}
你在开发一个网站。
你为了开发自己接到的新需求,创建一个分支(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
>_<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。