zoukankan      html  css  js  c++  java
  • Git--03 git分支

    Git分支

    ​ 分支即是平行空间,假设你在为某个手机系统研发拍照功能,代码已经完成了80%,但如果将这不完整的代码直接提交到git仓库中,又有可能影响到其他人的工作,此时我们便可以在该软件的项目之上创建一个名叫"拍照功能"的分支,这种分支只会属于你自己,而其他人看不到,等代码编写完成后再与原来的项目主分支合并下即可,这样即能保证代码不丢失,又不影响其他人的工作。

    一般在实际的项目开发中,我们要尽量保证master分支是非常稳定的,仅用于发布新版本,平时不要随便直接修改里面的数据文件,而工作的时候则可以创建不同的工作分支,等到工作完成后在合并到master分支上面,所以团队的合作分支看起来会像上面的图那样。 
    
    [root@git ~/git_data]# git log --oneline --decorate
    ef16b0b (HEAD, master) add ddd        #默认分支指向你最后一次的提交 HEAD头、指针
    6118c8d add bbb                    #HEAD 指针指向哪个分支、说明你当前在哪个分支下工作18c89e4 modified a
    1a85735 rename a.txt 
    a64e0f41 commit a.txt
    c6b0ac2 new file a
    

    1.新建testing分支

    [root@git ~/git_data]# git branch testing
    # *号在哪里就说明当前在哪个分支上如下图所示:
    [root@git ~/git_data]# git branch
    * master
    testing
    

    #通过命令查看分支指向
    [root@git ~/git_data]# git log --oneline --decorate
    ef16b0b (HEAD, testing, master) add ddd
    6118c8d add bbb
    18c89e4 modified a
    1a85735 rename a.txt 
    a64e0f41 commit a.txt
    c6b0ac2 new file a
    #切换到testing分支、对应的HEAD指针也指向了testing
    [root@git ~/git_data]# git checkout testing
    Switched to branch 'testing'
    #HEAD指针指向了testing
    [root@git ~/git_data]# git branch
    master
    * testing
    

    [root@git ~/git_data]# touch test
    [root@git ~/git_data]# git add .
    [root@git ~/git_data]# git commit -m 'commit test'
    [testing 0924a70] commit test
    1 file changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 test
    [root@git ~/git_data]# git log --oneline --decorate
    0924a70 (HEAD, testing) commit test
    ef16b0b (master) add ddd
    6118c8d add bbb
    18c89e4 modified a
    1a85735 rename a.txt a
    64e0f41 commit a.txt
    c6b0ac2 new file a
    

    [root@git ~/git_data]# git checkout master
    Switched to branch 'master'
    [root@git ~/git_data]# git branch
    * master
    testing
    [root@git ~/git_data]# ll    #正常情况下是没有test文件的、保证master分支是线上环境的total 4
    -rw-r--r-- 1 root root 16 Oct 20 18:36 a
    

    [root@git ~/git_data]# touch master
    [root@git ~/git_data]# git add .
    [root@git ~/git_data]# git commit -m "commit master"
    [master 8efaada] commit master
    1 file changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 master
    [root@git ~/git_data]# ll
    total 4
    -rw-r--r-- 1 root root 16 Oct 20 18:36 a-rw-r--r-- 1 root root 0 Nov 16 12:21 master
    

    2.合并分支

    [root@git ~/git_data]# git merge testing
    Merge branch 'testing'
    #Please enter a commit message to explain why this merge is necessary,
    # especially if it merges an updated upstream into a topic branch.
    #
    # Lines starting with '#' will be ignored, and an empty message aborts
    # the commit.
    merge testing to master        #提示输入描述信息,相当于git的-m参数
    #查看日志记录
    [root@git ~/git_data]# git log --oneline --decorate
    0fcf3ce (HEAD, master) Merge branch 'testing'
    8efaada commit master
    0924a70 (testing) commit teste
    f16b0b add ddd
    6118c8d add bbb
    18c89e4 modified a
    1a85735 rename a.txt 
    a64e0f41 commit a.txt
    c6b0ac2 new file a
    

    3.合并冲突

    [root@git ~/git_data]# echo "master" >> a
    [root@git ~/git_data]# git commit -am "modified a master"
    [master a3d84f3] modified a master
    1 file changed, 1 insertion(+)
    [root@git ~/git_data]# git checkout testing
    Switched to branch 'testing'
    [root@git ~/git_data]# git branch
    master
    * testing
    [root@git ~/git_data]# cat a
    aaa
    ccc
    bbb
    ddd
    [root@git ~/git_data]# echo "testing" >>a
    [root@git ~/git_data]# git commit -am "modified a on testing branch"
    [testing 23dec52] modified a on testing branch
    1 file changed, 1 insertion(+)
    [root@git ~/git_data]# git checkout master
    Switched to branch 'master'
    [root@git ~/git_data]# git merge testing
    Auto-merging a
    CONFLICT (content): Merge conflict in a
    Automatic merge failed; fix conflicts and then commit the result.
    [root@git ~/git_data]# cat a     #冲突的文件自动标识到文件里,手动更改冲突要保留的代码
    aaa
    ccc
    bbb
    ddd
    <<<<<<< HEAD
    master
    =======
    testing
    >>>>>>> testing
    [root@git ~/git_data]# git commit -am "merge testing to master"    #提交
    [master 5beb7bb] merge testing to master
    [root@git ~/git_data]# git log --oneline --decorate
    5beb7bb (HEAD, master) merge testing to master
    23dec52 (testing) modified a on testing branch
    a3d84f3 modified a master
    0fcf3ce Merge branch 'testing'
    8efaada commit master
    0924a70 commit test
    ef16b0b add ddd
    6118c8d add bbb
    18c89e4 modified a
    1a85735 rename a.txt 
    a64e0f41 commit a.txt
    c6b0ac2 new file a
    

    4.删除分支

    [root@git ~/git_data]# git branch -d testing
    Deleted branch testing (was 23dec52).
    [root@git ~/git_data]# git branch
    * master
    

    Git标签使用

    标签也是指向了一次commit提交,是一个里程碑式的标签,回滚打标签直接加标签号,不加唯一字符串不好记

    #-a指定标签名字 -m 指定说明文字
    [root@git ~/git_data]# git tag -a v1.0 -m "aaa bbb master tesing version v1.0"
    

    1.查看标签

    [root@git ~/git_data]# git tag
    v1.0
    # 指定某一次的提交为标签
    [root@git ~/git_data]# git tag -a v2.0 0924a70 -m "add bbb version v2.0"
    # 查看v1.0的信息 git show 加标签查看
    [root@git ~/git_data]# git reset --hard v2.0
    HEAD is now at 0924a70 commit test
    [root@git ~/git_data]# ll
    total 4
    -rw-r--r-- 1 root root 16 Nov 16 15:04 a
    -rw-r--r-- 1 root root 0 Nov 16 12:22 test
    

    02.删除标签

    [root@git ~/git_data]# git tag -d v2.0
    Deleted tag 'v2.0' (was b0b964c)
    [root@git ~/git_data]# git tagv1.0
    
  • 相关阅读:
    基于jQuery的鼠标悬停时放大图片的效果制作
    让document.write的广告无阻塞的加载
    浅谈DOM事件的优化
    前端自动化构建和发布系统的设计
    parseQueryString
    元素缩放
    apply用法
    3D旋转
    CSS居中的多种方法
    System Center Configuration Manager 2016 域准备篇(Part2)
  • 原文地址:https://www.cnblogs.com/gongjingyun123--/p/11969759.html
Copyright © 2011-2022 走看看