分支管理

分支

什么是分支?

软件项目中启动一套单独的开发线的方法,多分支并行开发,互不干扰。开发,测试完成后可以合并到主分支上。

为什么使用git分支?

1、可以很好的避免版本兼容开发的问题,避免不同版本之间的相互影响
2、封装一个开发阶段
3、解决bug的时候新建分支,用于对该bug的研究

相关命令

新建分支:

root@DESKTOP-33IBDMI:/mnt/e/git# git branch dev

列出项目所有分支:

root@DESKTOP-33IBDMI:/mnt/e/git# git branch
  dev
* master                #分支前面有*号,代表该分支为当前所在分支

删除分支

root@DESKTOP-33IBDMI:/mnt/e/git# git branch -d dev

更改分支名

root@DESKTOP-33IBDMI:/mnt/e/git# git branch
  bug
* master
root@DESKTOP-33IBDMI:/mnt/e/git# git branch -m bug dev        #bug为旧分支名,dev为新分支名
root@DESKTOP-33IBDMI:/mnt/e/git# git branch
  dev
* master

切换分支

root@DESKTOP-33IBDMI:/mnt/e/git# git branch
  dev
* master
root@DESKTOP-33IBDMI:/mnt/e/git# git checkout dev            #切换到dev分支
Switched to branch 'dev'
root@DESKTOP-33IBDMI:/mnt/e/git# git branch
* dev
  master

注意:切换分支时,如果对分支上的文件进行修改,且没有commit,就切换到另一个分支上,这时会报错。当然可以加 -f 参数强制切换到另外的分支上,但当前分支上的变更会直接丢弃,一般不建议使用此参数。

实例:

root@DESKTOP-33IBDMI:/mnt/e/git# git branch
  dev
* master
root@DESKTOP-33IBDMI:/mnt/e/git# ls
11.txt
root@DESKTOP-33IBDMI:/mnt/e/git# git checkout dev
Switched to branch 'dev'
root@DESKTOP-33IBDMI:/mnt/e/git# ls
11.txt
root@DESKTOP-33IBDMI:/mnt/e/git# touch 22.txt
root@DESKTOP-33IBDMI:/mnt/e/git# git add *
root@DESKTOP-33IBDMI:/mnt/e/git# git commit -m "add 22.txt"
[dev 461c95c] add 22.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 22.txt
root@DESKTOP-33IBDMI:/mnt/e/git# ls
11.txt  22.txt
root@DESKTOP-33IBDMI:/mnt/e/git# git checkout master
Switched to branch 'master'
root@DESKTOP-33IBDMI:/mnt/e/git# ls
11.txt

合并分支:

root@DESKTOP-33IBDMI:/mnt/e/git# git branch
  dev
* master
root@DESKTOP-33IBDMI:/mnt/e/git# git merge dev        #当前分支合并指定分支
Updating ef5b5ee..461c95c
Fast-forward
 11.txt | 1 +
 22.txt | 0
 2 files changed, 1 insertion(+)
 create mode 100644 22.txt
root@DESKTOP-33IBDMI:/mnt/e/git# ls
11.txt  22.txt

注意:master切换到dev分支,对a文件修改后提交,再切换回master分支,也对a修改后提交,然后在master分支merge dev分支,此时会产生冲突。
查看冲突的文件:git diff –name-only –diff-filter=U

Git diff

使用场景

1、解决冲突
2、制作补丁

相关命令
root@DESKTOP-33IBDMI:/mnt/e/git# cat 22.txt
sdfsd
root@DESKTOP-33IBDMI:/mnt/e/git# echo werwer >>22.txt
root@DESKTOP-33IBDMI:/mnt/e/git# git add 22.txt
root@DESKTOP-33IBDMI:/mnt/e/git# echo lkkll >>22.txt
root@DESKTOP-33IBDMI:/mnt/e/git# git diff                #用于比较当前工作区跟暂存区的差异
diff --git a/22.txt b/22.txt
index aa41325..9d15487 100644
--- a/22.txt        # - 表示变更前的文件
+++ b/22.txt        # + 表示变更后的文件
@@ -1,2 +1,3 @@     #在源文件第1行开始的2行和目标文件第1行开始的3行构成一个差异小结
 sdfsd
 werwer
+lkkll
root@DESKTOP-33IBDMI:/mnt/e/git# git diff --staged        #查看存入到暂存区,没提交到本地仓库的修改
diff --git a/22.txt b/22.txt
index e69de29..aa41325 100644
--- a/22.txt
+++ b/22.txt
@@ -0,0 +1,2 @@
+sdfsd
+werwer
root@DESKTOP-33IBDMI:/mnt/e/git# git commit -m "s w"
root@DESKTOP-33IBDMI:/mnt/e/git# git diff HEAD 22.txt        #比较的是工作区中的文件与版本库中文件的差异。HEAD指向的是版本库中的当前版本,而22.txt指的是当前工作区中的文件,也可以不具体指定
diff --git a/22.txt b/22.txt
index aa41325..d05c57f 100644
--- a/22.txt
+++ b/22.txt
@@ -1,2 +1,4 @@
 sdfsd
 werwer
+lkkll
+sdfklkj
root@DESKTOP-33IBDMI:/mnt/e/git# git diff dev            #当前分支与dev分支的差异
git diff 分支名1 分支名2                                  #查看两个指定分支(已提交的)的差异,分支2 跟分支1的差别
git diff commitid1 commitid2                             #用于列出两个历史提交的差异
git diff --stat                                          #用于罗列有变更的文件
原文地址:https://www.cnblogs.com/guarderming/p/10220005.html