[博主公告]

“linux大棚”是一个以Linux技术专题为主的博客。
本博客为了保证读者的浏览体验,决定不刊登任何广告信息。

专题

文章发布时间日历

September 2010
M T W T F S S
« Aug    
 12345
6789101112
13141516171819
20212223242526
27282930  
    <<返回主页

  • 12Oct
    %e3%80%8a%e7%9c%8b%e6%97%a5%e8%ae%b0%e5%ad%a6git%e3%80%8b%e4%b9%8b%e4%ba%8c%e5%8d%81%e4%ba%8c

    在之前的讲解中,涉及过git branch删除分支时-D和-d的区别,但没有深入研究,感觉不解渴。

    今天,就来分各种情况,好好研究研究-D和-d吧。(今天实验室组织去生存岛玩,很赞但很累。现在已经过了12点,凌晨坚持写完这篇博客… 困极了…)

    前提要说清,我们有master主分支、wukong分支共两个分支。

    情况一:wukong分支处于已commit状态。master也处于commit状态。然后在master主分支进行-D和-d,看看结果。

    结论:

    如果master分支执行了merge wukong操作,那么使用-d和-D是没有区别的。

    如果master分支没有执行过merge wukong操作,且wukong做出了修改,也就是说master根本没有把wukong的工作吸纳进来,则使用-d会显示:

    [rocrocket@wupengchong git22]$ git branch -d wukong
    error: The branch ‘wukong’ is not an ancestor of your current HEAD.
    If you are sure you want to delete it, run ‘git branch -D wukong’.

    如果是用-D当然会成功删除这个分支:

    [rocrocket@wupengchong git22]$ git branch -D wukong
    Deleted branch wukong.
    情况二:wukong分支处于未commit状态。然后在master主分支进行-D和-d,看看结果。

    结论:

    这种情况更为糟糕,因为当分支未commit时,你甚至是无法转移到master主分支的,瞧:

    [rocrocket@wupengchong git23]$ git checkout master
    error: Entry ‘roc.c’ not uptodate. Cannot merge.
    无法切换到主分支,那么删除wukong分支也就无从谈起了。看来还是要老老实实的commit wukong分支阿。

    情况三:wukong分支处于已commit状态。master处于未commit状态。然后在master主分支进行-D和-d,看看结果。

    结论:

    如果wukong进行了改进,那么在master分支使用-d来删除wukong分支时会失败:

    [rocrocket@wupengchong git23]$ git branch -d wukong
    error: The branch ‘wukong’ is not an ancestor of your current HEAD.
    If you are sure you want to delete it, run ‘git branch -D wukong’.

    如果wukong进行了改进,那么使用-D时会成功:

    [rocrocket@wupengchong git23]$ git branch -D wukong
    Deleted branch wukong.

    看来-d其实对于master是没有要求的,只是对wukong分支有要求,即必须是commit的。

    情况四:wukong分支处于未commit状态。master也处于未commit状态。然后在master主分支进行-D和-d,看看结果。

    结论:

    这个情况当然和情况二一样喽。

    四种情况,涵盖了大部分-D和-d的情况。足够用了!

    ps:这几天找工作,忙阿,投了google, 不过都杳无音信了,还有baidu,tencent,redhat, 继续努力吧 呵呵~

    晚安了!

    ===
    如果你对git感兴趣,请继续阅读:

    《看日记学git》之二十三

    《看日记学git》之二十四

    《看日记学git》之二十五

    over~

    我猜您对这些文章感兴趣:

    Posted by rocrocket @ 12:20 am

    Tags: , , ,

    2,530人阅读过了这篇文章。

    如果您还满意我的文章,请您订阅我的博客。点击“我要订阅”即可。谢谢:)

  • <<返回主页

One Response

WP_Cloudy
  • Lee.MaRS Says:

    man git-branch里面简单地两句话就说清楚了其实。
    [quote]
    -d
    Delete a branch. The branch must be fully merged in HEAD.

    -D
    Delete a branch irrespective of its merged status.
    [/quote]

    回复

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.