Git分支 --03

目录

  • Git分支

    • 1.新建testing分支
    • 2.合并分支
    • 3.合并冲突
    • 4.删除分支
  • Git标签使用
    • 1.查看标签
    • 02.删除标签

Git分支

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

一般在实际的项目开发中,我们要尽量保证master分支是非常稳定的,仅用于发布新版本,平时不要随便直接修改里面的数据文件,而工作的时候则可以创建不同的工作分支,等到工作完成后在合并到master分支上面,所以团队的合作分支看起来会像上面的图那样。 
[[email protected] ~/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分支

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

#通过命令查看分支指向
[[email protected] ~/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
[[email protected] ~/git_data]# git checkout testing
Switched to branch 'testing'
#HEAD指针指向了testing
[[email protected] ~/git_data]# git branch
master
* testing

[[email protected] ~/git_data]# touch test
[[email protected] ~/git_data]# git add .
[[email protected] ~/git_data]# git commit -m 'commit test'
[testing 0924a70] commit test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test
[[email protected] ~/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

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

[[email protected] ~/git_data]# touch master
[[email protected] ~/git_data]# git add .
[[email protected] ~/git_data]# git commit -m "commit master"
[master 8efaada] commit master
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 master
[[email protected] ~/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.合并分支

[[email protected] ~/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参数
#查看日志记录
[[email protected] ~/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.合并冲突

[[email protected] ~/git_data]# echo "master" >> a
[[email protected] ~/git_data]# git commit -am "modified a master"
[master a3d84f3] modified a master
1 file changed, 1 insertion(+)
[[email protected] ~/git_data]# git checkout testing
Switched to branch 'testing'
[[email protected] ~/git_data]# git branch
master
* testing
[[email protected] ~/git_data]# cat a
aaa
ccc
bbb
ddd
[[email protected] ~/git_data]# echo "testing" >>a
[[email protected] ~/git_data]# git commit -am "modified a on testing branch"
[testing 23dec52] modified a on testing branch
1 file changed, 1 insertion(+)
[[email protected] ~/git_data]# git checkout master
Switched to branch 'master'
[[email protected] ~/git_data]# git merge testing
Auto-merging a
CONFLICT (content): Merge conflict in a
Automatic merge failed; fix conflicts and then commit the result.
[[email protected] ~/git_data]# cat a     #冲突的文件自动标识到文件里,手动更改冲突要保留的代码
aaa
ccc
bbb
ddd
<<<<<<< HEAD
master
=======
testing
>>>>>>> testing
[[email protected] ~/git_data]# git commit -am "merge testing to master"    #提交
[master 5beb7bb] merge testing to master
[[email protected] ~/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.删除分支

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

Git标签使用

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

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

1.查看标签

[[email protected] ~/git_data]# git tag
v1.0
# 指定某一次的提交为标签
[[email protected] ~/git_data]# git tag -a v2.0 0924a70 -m "add bbb version v2.0"
# 查看v1.0的信息 git show 加标签查看
[[email protected] ~/git_data]# git reset --hard v2.0
HEAD is now at 0924a70 commit test
[[email protected] ~/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.删除标签

[[email protected] ~/git_data]# git tag -d v2.0
Deleted tag 'v2.0' (was b0b964c)
[[email protected] ~/git_data]# git tagv1.0

原文地址:https://www.cnblogs.com/gongjingyun123--/p/11969759.html

时间: 2024-10-12 10:11:02

Git分支 --03的相关文章

[廖雪峰] Git 分支管理策略

通常,合并分支时,如果可能,Git 会用 Fast forward 模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制 禁用 Fast forward 模式,Git 就会在 merge 时生成一个新的 commit,这样,从分支历史上就可以看出分支信息. 下面我们实战一下 --no-ff 方式的 git merge: 首先,仍然创建并切换 dev 分支: $ git checkout -b dev Switched to a new branch 'dev' 修改 readme.txt

GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流(转载)

最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮助. GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Git仓库 :git init ; -- 提交改变到缓存 :git commit -m 'desc

php 通过exec 创建git分支失败

今天给我们自己的发布系统增加一个新建分支的功能,操作比较简单,但是使用php执行shell命令的时候总是无法push分支到远程,但是登陆服务器执行却是可以的 新建分支命令如下 git fetch --all git checkout -b pmt_20160624_v10.7.4 origin/master  git push origin pmt_20160624_v10.7.4:pmt_20160624_v10.7.4 php大概代码如下,执行这个php文件是定时执行的 <?php $cmd

Git Step by Step – (5) Git分支(branch)

在前面两盘文章中介绍了Git的基本原理,都是理论知识.这篇文章我们再次回到实践中,看看Git分支(branch)的使用. 在代码版本控制工具中,都会有branch的概念.刚开始建立版本仓库的时候,我们只有一个主分支(master branch),我们不可能把日常的新功能开发.代码优化以及bug修复等概念工作全都放在主分支上,这样会使主分支很难维护.这就是为什么会有branch. 分支的创建及删除 分支的创建 在Git中,branch的创建很简单,我们可以通过下面的命令创建一个"release-1

git 分支的创建、合并、删除

      基本概念与命令 分支(branch):每次提交,Git都把提交的内容串成一条时间线,这条时间线就是一个分支 .   git 分支的创建 git checkout -b gt 分支的合并 git merge git分支的删除  git branch -d git分支的查看  git branch      具体步骤 创建新的分支dev (以前的主分支是master) 查看git分支 在dev分支下添加并提交readme.txt 从dev分支切换到master分支 合并dev分支到mas

GIT 分支管理:分支管理策略、Bug分支、Feature分支

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息. 下面我们实战一下--no-ff方式的git merge: 首先,仍然创建并切换dev分支: $ git checkout -b dev Switched to a new branch 'dev' 修改readme.txt文件,并提交一个新的commit

批量删除git分支

本篇文章由:http://xinpure.com/?p=15 批量删除git分支 使用 git 时候,经常会发现,不知不觉就创建了大量的分支.那么,麻烦事就来了,如此多废弃的分支,该怎么办呢? 总不能一个一个执行 git branch -D branchName 删除吧! 下面就给大家提供一种批量删除分支的方法: git branch |grep 'branchName' |xargs git branch -D 这是通过 shell 管道命令来实现的批量删除分支的功能 git branch 输

Git详解之三 Git分支

相关文档 — 更多 Git 基础培训.ppt GIT 使用经验.ppt GIT 介绍.pptx GIT 分支管理是一门艺术.docx Eclipse上GIT插件EGIT使用手册.docx git/github学习笔记.doc git 版本控制系统.docx Git开发管理之道.pdf Git内部培训资料.pptx Git权威指南-第5篇-第32章-Gerrit.pdf Gitolite 构建 Git 服务器.pdf 版本控制之道 - 使用Git.pdf Git使用指南(中文).pdf Git-C

GIt分支管理策略

大纲: 1.前言 2.创建分支 3.切换分支 4.合并分支(快速合并) 5.删除分支 6.分支合并冲突 7.合并分支(普通合并) 8.分支管理策略 9.团队多人开发协作 10.总结 注,测试机 CentOS 5.5 x86_64,Git 服务器版本:git version 1.8.2.1,客户端版本:git version 1.9.2.msysgit.0.所有软件请到这里下载:http://msysgit.github.io/. 1.前言 在上一篇博客中我们主要讲解了Git 远程仓库,相信大家对