Git分支详解
git branch命令
- 查看分支
git branch
- 新建分支
git branch branch_name
- 切换分支
git checkout branch
- 删除分支
git branch -d branch_name
(注意不能删除当前所在的分支) - 更改分支名称
git branch -m old_name new_name
- 创建分支并切换到新创建的分支
git branch -b branch_name
- 合并分支
git merge branch_name
- 查看工作区与暂存区差异
git diff
- 查看提交历史
git log
- 封存当前暂存区修改
git stash
- 查看当前保存内容
git stash list
- 提取暂存区
git stash apply stash@{0}
git分支初步使用
-
首先查看当前目录下的git分支
$ git branch admin * master
当前目录有两个分支,分别是master与admin分支,并且目前我们处于master分支上。
当前的项目文件的内容相同,因为我们没有做修改。 -
对文件进行修改并合并
在master分支下的文件里添加注释
#this is master branch
在admin分支下的文件中添加注释
#this is admin branch
使用git commit -am 'admin branch'
提交更改
回到master分支,使用git merge admin
命令合并分支$ git merge admin Auto-merging dPro/urls.py CONFLICT (content): Merge conflict in dPro/urls.py Automatic merge failed; fix conflicts and then commit the result.
可以看到,git提示我们合并失败,因为在文件
dPro/url.py
内有冲突,他要求我们手动合并并重新提交
在dPro/url.py
内显示了冲突的内容<<<<<<< HEAD #这是master分支 ======= #this is admin branch >>>>>>> admin
我们对文件进行修改,将admin分支的内容合并到master分支上,修改结果如下
#this is admin branch
git提示我们合并成功
-
查看版本差异
首先使用git log
查看版本历史commit f387cc59552544a031cbd424f3d516a2781ecbab (HEAD -> master) Merge: 167823b 8e554e9 Author: Qian <2358979326@qq.com> Date: Sun Jun 2 12:36:38 2019 +0800 mergeadmin fix conflict commit 8e554e9a334d31b5acce076d465fb398f6d9ac6c (admin) Author: Qian <2358979326@qq.com> Date: Sun Jun 2 12:19:52 2019 +0800 admin branch commit 167823b479d9c932414534bbaa6610674807f907 Author: Qian <2358979326@qq.com> Date: Sat Jun 1 23:39:58 2019 +0800 test
我们选择两个版本比较差异,使用
git diff 版本号1 版本号2
,一般选择版本号前8位(git使用前7位)。$ git diff f387cc595 167823b479d diff --git a/dPro/urls.py b/dPro/urls.py index f12a399..7ca8aa1 100644 --- a/dPro/urls.py +++ b/dPro/urls.py @@ -24,5 +24,4 @@ urlpatterns = [ url(r'login/',views.login), url(r'index/',views.index), ] -#this is admin branch - +#这是master分支
-
封存暂存区
我们对文件进行修改,添加#对暂存区的修改
,并保存
接着我们切换到admin分支,使用git checkout admin
命令,出现以下错误error: Your local changes to the following files would be overwritten by checkout: dPro/urls.py Please commit your changes or stash them before you switch branches. Aborting
git提示我们提交我们的修改,或者是在切换分支之前satsh他们。
我们使用git stash
命令暂存。
此时我们的工作区已经变成了修改之前的状态,即之前做的修改已经撤销掉了,可以安全的切换分支了。 -
提取暂存区
当我们将修改暂存并切换分支后,重新回到之前暂存内容的分支时,如何提取之前stash的内容?
首先使用git stash list
查看当前保存的内容$ git stash list stash@{0}: WIP on master: f387cc5 mergeadmin fix conflict stash@{1}: WIP on master: f387cc5 mergeadmin fix conflict
使用命令
git stash apply stash@{0}
,打开编辑器,可以看到之前做的修改已经提取出来了。
网友评论