使用git新建分支以及管理分支

时间:2021-12-05 04:49:02

在进行分支相关的操作前, 我们需要保持主分支干净, 所谓的干净就是没有任何改变(所有更改都已经commit 并 push),那么你可以在任何时候从你的主分支创建一个新分支。

为了方便代码管理,我们应该始终保持主干分支干净,为了其他新增需求或差异版本去创建相应分支。 如果主干分支上有问题要修改,我们最好不要在主干分支上直接修改,而是为了修改这个问题

专门去创建一个分支,当问题修改测试完成稳定后,把这个分支合入到主干分支,完了可以删除掉这个分支(当然,根据实际情况也可以保留)。然后主干上的这个修改就可以通过合并,同步到其他的分支上去。

查看分支:

查看所有已存在的分支,你可以使用: git branch

例如:未拉分支之前,我们查看只有一个主分支master,前面带*号的代表当前所在的分支

使用git新建分支以及管理分支

新建分支:

在本地电脑新建一个分支: git branch <新分支名字>

将新分支发布在github上: git push origin <新分支名字>

使用git新建分支以及管理分支

创建成功后查看:可见多了一个分支b1,目前位于master分支

使用git新建分支以及管理分支

切换分支:

切换到目标分支: git checkout <分支名字>

下图可见用命令已经切换到新建的b1分支上面

使用git新建分支以及管理分支

删除分支:

注意:不能删除当前所在分支,要删除某个分支,必须先切换到其他分支上

在本地删除一个分支: git branch -d <本地分支>

在github远程端删除一个分支: git push origin :<远程端分支>

在b1分支删除b1分支:(error)

使用git新建分支以及管理分支

在master分支删除b1分支:(ok)

使用git新建分支以及管理分支

合并分支:

命令如下: git merge  <分支名字>

注意:该命令是将  <分支名字> 的改动合并到你当前所在分支,

【1】如果当前所在分支是master,那么合并到master之后,master分支需要进行push操作

1.切换到master分支

使用git新建分支以及管理分支

2. 将b1分支合并到master分支

使用git新建分支以及管理分支

3.可见master分支有变动,需要提交来更新到远程服务器

使用git新建分支以及管理分支

4. 提交master合并后的更新到远程服务器

使用git新建分支以及管理分支

使用git新建分支以及管理分支

5. 查看ok!!

使用git新建分支以及管理分支

【2】如果当前所在分支不是master,那么合并到当前分支之后,当前分支的本地和远程就都是合并后的最新状态,不需要进行push操作

1.切换到b1分支

使用git新建分支以及管理分支

2.将master合并到b1

使用git新建分支以及管理分支

3. 查看ok!!

使用git新建分支以及管理分支

查看分支之间的不同:
        $ git diff branchName   查看当前分支与branchName分支之间的差异,也可以使用:$ git diff branch1 branch2 来比较这1和2分支之间的差异,当使用第一种方式比较时,如果当前工作目录中存在与branchName同名的文件,系统则会提示错误,要是指明要比较的是文件还是分支,如果比较分支,可以进入.git中进行比较或切换分支,如果是>比较文件,则使用$ git diff -- fileName命令。
        $ git diff <branchA>:<fileA> <branchB>:<fileB>
        $ git ls-tree -r branch 列出所有的树对象

合并冲突:
    如果在不同的分支中都修改了同一个文件的同一部分,Git 就无法干净地把两者合到一起(译注:逻辑上说,这种问题只能由人来裁决。)
    任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。
    在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决状态(译注:实际上就是来一次快照保存到暂存区域。)。因为一旦暂存,就表示冲突已经解决。如
果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突。
    要从该清单中筛选出你已经(或尚未)与当前分支合并的分支,可以用 --merge 和 --no-merged 选项(Git 1.5.6 以上版本)。比如用 git branch --merge 查看哪些分支>已被并入当前分支(译注:也就是说哪些分支是当前分支的直接上游。)