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

Git--03 git分支的更多相关文章

  1. Git - 03. git 工作空间

    1. 概述 git 存放代码的地方 2. 创建 命令 # 1. 从无到有 > git init # 2. 从远程拉去现有的仓库 > git clone <url> 3. 文件生 ...

  2. git合并远端分支到本地分支的两种方式

    作者:zhanhailiang 日期:2014-11-21 在使用版本号工具提交改动之前,都须要通过update先将本地代码更新到最新版本号.SVN通过svn update就能够实现,那么git怎样实 ...

  3. Git Pro - (2)分支

    Git 保存的不是文件差异或者变化量,而只是一系列文件快照. 在 Git中提交时,会保存一个提交(commit)对象,它包含一个指向暂存内容快照的指针,作者和相关附属信息,以及一定数量(也可能没有)指 ...

  4. Git远程和分支管理

    一.远程       Git是分布式版本控制系统,最重要的优点就是远程仓库托管代码.不用自己搭建一个服务器,在github上面注册一个账户就可免费获取远程仓库.      首先需要先在github上面 ...

  5. git 基于发布分支的开发

    创建发布分支: (1) 软件hello-world的1.0发布版本库中有一个里程相对应. /home/jackluo/workspace/user1/workspace/hello-worldgit ...

  6. git 创建branch分支

    开发者user1 负责用getopt 进行命令解析的功能,因为这个功能用到getopt 函数,于是将这个分支命名为user1/getopt.(1)确保是在开发者user1的工作区中cd /home/j ...

  7. git基础及分支

    关于版本控制 git是一种分布版本控制系统,每一主机都保存了完整副本.必杀技是分支. 在Windows可安装git客户端msysgit. git基础 第一次看progit觉得有点不懂,不懂版本控制,一 ...

  8. git 创建branch分支【转】

    转自:http://www.cnblogs.com/jackluo/p/3499731.html 开发者user1 负责用getopt 进行命令解析的功能,因为这个功能用到getopt 函数,于是将这 ...

  9. Git教程之分支管理之二

    分支管理策略 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息.如果要强制禁用Fast forward模式,Git就会在merge时生成一个 ...

  10. Git教程之分支管理之一

    分支在实际中有什么用呢? 你创建了一个属于你自己的分支,别人看不到,别人还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又 ...

随机推荐

  1. jinfo 干涉java runtime的jvm参数

    https://blog.csdn.net/bolg_hero/article/details/78156311 jinfo使用介绍可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时, ...

  2. 【leetcode】516. Longest Palindromic Subsequence

    题目如下: 解题思路:很经典的动态规划题目,但是用python会超时,只好用C++了. 代码如下: class Solution { public: int longestPalindromeSubs ...

  3. 20180704-Java开发环境配置

    介绍如何搭建Java开发环境推荐:在Cloud Studio中运行Java程序 Java是一种跨平台的编程语言,想要让你的计算机能够运行Java程序那么就需要安装JRE,而想要开发Java程序,那么就 ...

  4. Linux系统中imp导入dmp文件

    [oracle@ocm1 ~]$ lltotal 32-rw-r--r-- 1 oracle oinstall 24576 Mar 27 15:26 COUNTRIES.dmpdrwxr-xr-x 2 ...

  5. [CSP-S模拟测试]:旋转子段(数学)

    题目描述 $ZYL$有$N$张牌编号分别为$1,2,...,N$.他把这$N$张牌打乱排成一排,然后他要做一次旋转使得旋转后固定点尽可能多.如果第$i$个位置的牌的编号为$i$,我们就称之为固定点.旋 ...

  6. IntelliJ IDEA最新版配置Tomcat(完整版教程)

    查找该问题的童鞋我相信IntelliJ IDEA,Tomcat的下载,JDK等其他的配置都应该完成了,那我直接进入正题了. 1.新建一个项目 2.由于这里我们仅仅为了展示如何成功部署Tomcat,以及 ...

  7. IHttpHandler

    https://docs.microsoft.com/en-us/dotnet/api/system.web.ihttphandler?view=netframework-4.8 Defines th ...

  8. scrapy--meta参数传递问题

    scrapy使用大坑---meta参数传递出现之重复问题 问题描述: 爬虫目标: 实现哔哩哔哩网站的视频信息爬取,只要的信息结构爬去顺序为**关键词的搜索结果,拿到第一页上某个视频的标题,url,和时 ...

  9. 【MM系列】SAP KP26 报工出错

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP KP26 报工出错   前言 ...

  10. poj2718Smallest Difference (穷竭搜索)

    escription - 题目描述 给定若干位十进制数,你可以通过选择一个非空子集并以某种顺序构建一个数.剩余元素可以用相同规则构建第二个数.除非构造的数恰好为0,否则不能以0打头. 举例来说,给定数 ...