zoukankan      html  css  js  c++  java
  • git分支 & git标签

    一、git分支

    1.什么是分支

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

    2.分支的操作

    1)查看 当前分支

    `一般在实际的项目开发中,我们要尽量保证master分支是非常稳定的,仅用于发布新版本,平时不要随便直接修改里面的数据文件,
    而工作的时候则可以新建不同的工作分支,等到工作完成后在合并到master分支上面,所以团队的合作分支看起来会像上面图那样。`
    [root@git git_data]# git log --oneline  --decorate
    3044a5a (HEAD, master) 错误的提交		#HEAD表示指针,master表示主分支,默认分支指向你最后一次的提交 HEAD头、指针
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    

    2)查看所有分支

    [root@git git_data]# git branch 
    * master		# * 表示当前所在的分支 
    

    3)创建分支

    [root@git git_data]# git branch test		# 新建test分支
    [root@git git_data]# git branch 
    * master
      test
    [root@git git_data]# git branch dev
    [root@git git_data]# git branch 
      dev
    * master
      test
    

    4)切换分支

    [root@git git_data]# git checkout test		        # 切换至test分支
    Switched to branch 'test'
    [root@git git_data]# git branch 			# 查看分支处于test中
      dev
      master
    * test
    [root@git git_data]# git checkout dev
    Switched to branch 'dev'
    [root@git git_data]# git branch 
    * dev
      master
      test
    
    #如果当前分支有未提交的内容,不允许切换分支
    [root@git git_data]# git checkout test
    error: Your local changes to the following files would be overwritten by checkout:
    	master
    Please, commit your changes or stash them before you can switch branches.
    Aborting
    

    5)使用分支

    #1.主分支创建文件并提交到本地仓库
    [root@git git_data]# touch master
    [root@git git_data]# git add master
    [root@git git_data]# git commit -m "测试主分支提交代码"
    
    #2.切换到dev分支,查看工作区域,没有主分支创建的文件
    [root@git git_data]# git checkout dev
    [root@git git_data]# git branch 
    * dev
      master
      test
    [root@git git_data]# ll
    -rw-r--r-- 1 root root 4 Sep 17 17:40 3
    
    #3.普通分支创建文件并提交到本地仓库
    [root@git git_data]# touch dev
    [root@git git_data]# ll
    total 4
    -rw-r--r-- 1 root root 4 Sep 17 17:40 3
    -rw-r--r-- 1 root root 0 Sep 21 22:52 dev
    [root@git git_data]# git add dev
    [root@git git_data]# git commit -m "测试dev分支提交代码"
     
    #4.切换到主分支查看
    [root@git git_data]# git checkout master
    Switched to branch 'master'
    [root@git git_data]# ll
    total 4
    -rw-r--r-- 1 root root 4 Sep 17 17:40 3
    -rw-r--r-- 1 root root 0 Sep 21 22:53 master
    

    6)合并分支

    #切换到主分支
    [root@git git_data]# git branch 
      dev
    * master
      test
    #合并dev分支的代码
    [root@git git_data]# git merge dev
    
    #查看内容(主分支中多了dev分支中的内容)
    [root@git git_data]# ll
    total 8
    -rw-r--r-- 1 root root 4 Sep 17 17:40 3
    -rw-r--r-- 1 root root 0 Sep 21 22:58 dev
    -rw-r--r-- 1 root root 0 Sep 21 22:58 master
    
    #切换回dev分支,修改代码内容
    [root@git git_data]# git checkout dev
    [root@git git_data]# echo dev > dev 
    
    #再次切换回主分支,代码自动更新
    [root@git git_data]# git checkout master
    [root@git git_data]# ll
    total 8
    -rw-r--r-- 1 root root 4 Sep 17 17:40 3
    -rw-r--r-- 1 root root 4 Sep 21 22:58 dev
    -rw-r--r-- 1 root root 0 Sep 21 22:58 master
    
    #查看git提交日志
    [root@git git_data]# git log --oneline --decorate
    131f703 (HEAD, master) Merge branch 'dev'
    4566cb6 (dev) 测试dev分支提交代码
    525099c 测试主分支提交代码
    3044a5a (test) 错误的提交			#test没有任何操作,所以停留在最后操作的时间点
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    

    7)合并冲突

    #在主分支创建一个文件并提交到本地仓库
    [root@git git_data]# git branch 
    * master
      test
    [root@git git_data]# echo master > master 
    [root@git git_data]# git add .
    [root@git git_data]# git commit -m '删除开发使用的分支及数据'
     
    #切换到普通分支,创建一个与主分支相同名字的文件
    [root@git git_data]# git checkout test
    [root@git git_data]# echo 1111 > master
    
    #提交普通分支的文件到本地仓库
    [root@git git_data]# git add .
    [root@git git_data]# git commit -m "在test分支创建一个与主分支一样的文件"
    
    #回到主分支进行分支合并
    [root@git git_data]# git checkout master
    [root@git git_data]# ll
    total 8
    -rw-r--r-- 1 root root 4 Sep 17 17:40 3
    -rw-r--r-- 1 root root 7 Sep 21 23:11 master
    [root@git git_data]# git merge test
    Auto-merging master
    CONFLICT (add/add): Merge conflict in master
    Automatic merge failed; fix conflicts and then commit the result.
    
    #编辑冲突的文件,删除没有用的内容,保留需要代码
    [root@git git_data]# vim master 
    [root@git git_data]# git add .
    [root@git git_data]# git commit -m "解决分支合并冲突"
    [master 6f9367c] 解决分支合并冲突
    
    #解决分支合并,如果有修改内容需要再次合并
    

    8)删除分支

    # 当分支已经和主分支合并,那可以对分支进行删除处理
    [root@git git_data]# git branch -d dev
    Deleted branch dev (was 4566cb6).
    [root@git git_data]# git branch
    * master
      test
    

    二、git标签

    Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v2.0等等)。
    当需要进行回滚操作可直接使用标签名进行回滚,便于记忆,无需使用id。
    

    1.打标签

    1)查看提交

    [root@git git_data]# git log --oneline --decorate
    6f9367c (HEAD, master) 解决分支合并冲突
    a2993b3 在test分支创建一个与主分支一样的文件
    70c9ada 删除开发使用的分支及数据
    131f703 Merge branch 'dev'
    4566cb6 测试dev分支提交代码
    525099c 测试主分支提交代码
    3044a5a 错误的提交
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    

    2)打标签

    [root@git git_data]# git tag -a 2.0 -m "解决分支合并冲突以后的标签"
    
    -a		#指定标签的名字
    -m		#给标签加注释,也就是指定说明文字
    
    #当没有指定标签打在那一次更新上,默认将标签打在最近一次提交的上面
    [root@git git_data]# git log --oneline --decorate
    6f9367c (HEAD, tag: 2.0, master) 解决分支合并冲突
    a2993b3 在test分支创建一个与主分支一样的文件
    70c9ada 删除开发使用的分支及数据
    131f703 Merge branch 'dev'
    4566cb6 测试dev分支提交代码
    525099c 测试主分支提交代码
    3044a5a 错误的提交
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    

    3)给指定提交打标签

    [root@git git_data]# git tag -a v1.0 4566cb6 -m "测试给指定提交打标签"
    [root@git git_data]# git tag
    2.0
    v1.0
    
    [root@git git_data]# git log --oneline --decorate
    6f9367c (HEAD, tag: 2.0, master) 解决分支合并冲突
    a2993b3 在test分支创建一个与主分支一样的文件
    70c9ada 删除开发使用的分支及数据
    131f703 Merge branch 'dev'
    4566cb6 (tag: v1.0) 测试dev分支提交代码
    525099c 测试主分支提交代码
    3044a5a 错误的提交
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    

    2.查看标签

    [root@git git_data]# git tag
    2.0
    [root@git git_data]# git show v1.0   # 查看v1.0的信息  git show 加标签查看
    

    3.根据标签回滚

    #使用提交的ID进行回滚
    [root@git git_data]# git reset --hard 3044a5a
    HEAD is now at 3044a5a 错误的提交
    [root@git git_data]# git log --oneline --decorate
    3044a5a (HEAD, master) 错误的提交
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    [root@git git_data]# ll
    total 4
    -rw-r--r-- 1 root root 4 Sep 17 17:40 3
    
    #使用标签进行回滚
    [root@git git_data]# git log --oneline --decorate
    3044a5a (HEAD, master) 错误的提交
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    [root@git git_data]# git reflog			#(可对回滚标签查看)
    [root@git git_data]# git reset --hard v1.0
    HEAD is now at 4566cb6 测试dev分支提交代码
    [root@git git_data]# git log --oneline --decorate
    4566cb6 (HEAD, tag: v1.0, master) 测试dev分支提交代码
    3044a5a 错误的提交
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    
    [root@git git_data]# git reset --hard 2.0
    [root@git git_data]# git log --oneline --decorate
    6f9367c (HEAD, tag: 2.0, master) 解决分支合并冲突
    a2993b3 在test分支创建一个与主分支一样的文件
    70c9ada 删除开发使用的分支及数据
    131f703 Merge branch 'dev'
    4566cb6 (tag: v1.0) 测试dev分支提交代码
    525099c 测试主分支提交代码
    3044a5a 错误的提交
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    

    4.删除标签

    #删除标签
    [root@git git_data]# git tag -d 2.0
    Deleted tag '2.0' (was ed07882)
    [root@git git_data]# git tag 
    v1.0
    [root@git git_data]# git log --oneline --decorate
    6f9367c (HEAD, master) 解决分支合并冲突
    a2993b3 在test分支创建一个与主分支一样的文件
    70c9ada 删除开发使用的分支及数据
    131f703 Merge branch 'dev'
    4566cb6 (tag: v1.0) 测试dev分支提交代码
    525099c 测试主分支提交代码
    3044a5a 错误的提交
    43f49f3 modified 3
    90f573f rename 3 too
    5d61056 rename 3.txt
    a4566ae add new file 3
    
  • 相关阅读:
    android studio首次运行出错
    分享4种CSS3效果(360度旋转、旋转放大、放大、移动)
    重温CSS:Border属性
    CSS3之过渡Transition
    ASP.NET(C#)--Repeater中生成“序号”列
    Android开发过程问题集锦(Continuous updating)
    ZOJ Problem Set Vol 1(Update paste)
    MapReduce基本原理及应用
    Tensorflow之基于MNIST手写识别的入门介绍[转载]
    Tensorflow 计算模型——计算图
  • 原文地址:https://www.cnblogs.com/tcy1/p/13708385.html
Copyright © 2011-2022 走看看