Git分支基本操作方法有哪些(git,开发技术)

时间:2024-04-30 07:57:21 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    1、创建分支

    (1)创建分支

    Git 是怎么创建新分支的呢?

    很简单,就是要创建一个可以移动的新的指针。

    比如,创建一个testing分支, 你需要使用命令:git branch testing

    示例:

    #1.查看本地版本库历史提交
    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitlog--oneline
    b97ccfd(HEAD->master)第3次提交,新增内容:branchtestv3
    f72a9fe第2次提交,新增内容:branchtestv2
    fa2439a第1次提交,新增readme.txt文件

    2.新建分支testing

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitbranchtesting

    3.再次查看本地版本库历史提交

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitlog--oneline
    b97ccfd(HEAD->master,testing)第3次提交,新增内容:branchtestv3
    f72a9fe第2次提交,新增内容:branchtestv2
    fa2439a第1次提交,新增readme.txt文件

    可以看到(HEAD -> master, testing),说明本地版本库中,已经多了一个testing分支。

    (2)图示理解

    如上操作,会在当前所在的提交对象上创建一个新的指针。

    如下图:

    Git分支基本操作方法有哪些

    那么Git 又是怎么知道当前在哪一个分支上呢? 也很简单,它有一个名为HEAD的特殊指针,HEAD指向当前所在的本地分支上。

    在本例中,是仍然在master分支上。 因为git branch命令仅仅创建一个新分支,并不会自动切换到新分支中去。

    因为上面日志信息:(HEAD -> master, testing),也说明HEAD指针指向的是master分支。

    如下图所示:

    Git分支基本操作方法有哪些

    如图所示,当前mastertesting分支均指向校验和以b97ccfd开头的提交对象。

    2、查看分支列表

    执行命令:git branch。不用加任何参数。

    如下图:

    Git分支基本操作方法有哪些

    该命令会列出当前本地版本库中存在的所有分支,且当前正在工作的分支前会显示*

    和命令行路径后面( )中的内容相对应。

    3、分支切换

    要切换到一个已存在的分支,你需要使用git checkout branchname命令。

    我们现在切换到新创建的testing分支去:

    #1.切换到testing分支上
    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitcheckouttesting
    Switchedtobranch'testing'#提示:切换到分支“testing”

    2.查看当前正在工作的分支。

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(testing)#这里
    $gitbranch
    master
    testing#这里

    现在HEAD就指向testing分支了。(即:HEAD会指向当前所在的分支)

    Git分支基本操作方法有哪些

    提示:

    在创建分支的时候,添加-b选项,可以直接切换到新创建的分支上。

    例如:git checkout -b testing

    该命令等价于如下两条命令:

    • git branch testing:创建分支。

    • git checkout testing:切换分支。

    4、查看所有分支的最后一个提交

    使用git branch -v命令可以查看,所有分支的最后一次提交。

    我们在testing分支修改readme.txt文件,再进行一次提交。

    #1.查看当前工作的分支
    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(testing)
    $gitbranch
    master
    testing

    2.修改文件,提交新版本

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(testing)
    $echo"branchtestv4">>readme.txt

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(testing)
    $gitcommit-a-m'第4次提交,新增内容:branchtestv4'
    warning:LFwillbereplacedbyCRLFinreadme.txt.
    Thefilewillhaveitsoriginallineendingsinyourworkingdirectory
    [testing25f0827]第4次提交,新增内容:branchtestv4
    1filechanged,1insertion(+)

    3.查看所有分支的最后一次提价

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(testing)
    $gitbranch-v
    masterb97ccfd第3次提交,新增内容:branchtestv3
    *testing25f0827第4次提交,新增内容:branchtestv4

    4.查看版本库历史提交记录

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(testing)
    $gitlog--graph--oneline
    25f0827(HEAD->testing)第4次提交,新增内容:branchtestv4
    b97ccfd(master)第3次提交,新增内容:branchtestv3
    f72a9fe第2次提交,新增内容:branchtestv2
    fa2439a第1次提交,新增readme.txt文件

    通过上面的日志信息,此时HEAD指针的状态如下图:

    Git分支基本操作方法有哪些

    可以看到HEAD随着在testing分支上的提交操作,自动向前移动。

    5、删除分支

    使用命令:git branch -d branchname

    但是要注意的是:若要删除某分支,必须要保证当前工作的分支,不能是该分支。

    这个时候我们需要先切换回master分支。

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(testing)
    $gitcheckoutmaster
    Switchedtobranch'master'

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitbranch
    *master
    testing

    此时HEAD指针的状态如下图:

    Git分支基本操作方法有哪些

    说明:git checkout master这条命令做了两件事。

    是使 HEAD 指回master分支。

    是将工作目录中文件,恢复成master分支所指向提交的快照内容。

    在切换分支时,一定要注意你工作目录里的文件会被改变,你的工作目录会恢复到该分支最后一次提交时的样子。如果 Git 不能干净利落地完成这个任务,它将禁止切换分支。(下面分支实战中有详细说明)

    也就是说,你现在做修改的话,项目将始于master分支版本。 本质上来讲,这就是忽略testing分支所做的修改,以便于向另一个方向进行开发。

    继续我们开始删除testing分支。

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitbranch-dtesting
    error:Thebranch'testing'isnotfullymerged.
    Ifyouaresureyouwanttodeleteit,run'gitbranch-Dtesting'.

    提示你:分支“testing”没有合并到主分支,如果确定要删除它,请运行git branch -D testing命令。。

    所以我们使用-D选项删除testing分支。

    #1.删除分支
    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitbranch-Dtesting
    Deletedbranchtesting(was25f0827).

    2.查看本地库中的分支,就只有master分支了

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitbranch
    *master

    3.查看提交历史记录

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitlog--graph--oneline
    b97ccfd(HEAD->master)第3次提交,新增内容:branchtestv3
    f72a9fe第2次提交,新增内容:branchtestv2
    *fa2439a第1次提交,新增readme.txt文件

    可以看到对testing分支的修改,只要没有合并,对master分支是没有影响的。

    4.查看可回退的提交历史记录

    L@DESKTOP-T2AI2SUMINGW64/j/git-repository/learngit(master)
    $gitreflog
    b97ccfd(HEAD->master)HEAD@{0}:checkout:movingfromtestingtomaster
    25f0827HEAD@{1}:commit:第4次提交,新增内容:branchtestv4
    b97ccfd(HEAD->master)HEAD@{2}:checkout:movingfrommastertotesting
    b97ccfd(HEAD->master)HEAD@{3}:commit:第3次提交,新增内容:branchtestv3
    f72a9feHEAD@{4}:commit:第2次提交,新增内容:branchtestv2
    fa2439aHEAD@{5}:commit(initial):第1次提交,新增readme.txt文件

    可以看到只要HEAD移动过,所有历史轨迹都会保留在Git版本库中。

    (也就是.git/objects目录中的文件只能无限的增多,存储了就不会删除掉。)

    提示:合并后的分支不仅无用,它的存在还会引起不必要的麻烦,一般都会删除无用的分支。

    本文:Git分支基本操作方法有哪些的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:Vue怎么设置、删除和获取cookie下一篇:

    40 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18