git分支

git分支,从本质上来讲仅仅是指向提交对象的可变指针,在这一点上与svn是有着本质区别,svn的分支实际就是个目录而已.

git默认分支名字是 master,在多次提交操作后,你其实已经有一个指向最后那个提交对象的master分支. 它会在每次的提交操作中自动向前移动.

1. git log日志查看提交历史

git log  --oneline --decorate    #简要信息,可以看较多日志,里面有个(HEAD,master) 有HEAD的就是主分支.当前分支
git log #信息较全,查看的日志单条很长. 还可以使用 git log -10 查看10条
git log -p #详细的日志信息,可以查看每次的提交内容
--no-ff -m:不使用fast-forward方式合并,保留分支的commit历史 : git merge --no-ff -m
--squash:使用squash方式合并,把多次分支commit历史压缩为一次 : git merge --squash

2. 分支的创建修改删除增加查看切换

1. git创建分支
[root@master 777]# git branch #查看分支
* master #多分枝的情况下,带星号的是主分支master ##创建分支
[root@master 777]# git branch chenleilei #创建一个chenleilei的分支 2. 查看分支 git branch
[root@master 777]# git branch
chenleilei
* master #---带 * 表示当前所在分支. [root@master 777]# git log --oneline --decorate
fa4e4b2 (HEAD, master, chenleilei) commit a ## 有HEAD标识的就是当前分支.
68fec00 commit a
e1ebcce commit a
3b65d3a commit a
202ba55 commit a
23be0b9 commit a 3. 切换分支 git checkout
## 多个分支指向同一个分支,他们分支内容是一样的.
[root@master 777]# git checkout chenleilei
Switched to branch 'chenleilei' ## 提示切换到了 chenleilei分支 ## 检查是否切换
[root@master 777]# git branch
* chenleilei ## 可以看到chenleilei这个分支已经成为了 主分支.
master 4. git 删除分支 git branch -d [分支名]
[root@master 777]# git branch -d chenleilei
Deleted branch chenleilei (was fa4e4b2). ##成功删除 报错: error: Cannot delete the branch 'xxx' 需要切换到其他分支[git checkout 分支名]才能删除当前分支
[root@master 777]# git branch #查看分支,已经删除了 chenlelei分支.
* master 5. 查看分支
[root@master 777]# git branch #可以查询到有那些分支
* master

注意:

分支的切换也会让HEAD切换,一旦master切换为了 chenleilei 分支,那么chenleilei分支就会成为master分支,HEAD也会转移到 chenleilei 分支中.

[root@master 777]#  git log --oneline --decorate
fa4e4b2 (HEAD, master, chenleilei) commit a ## chenleilei分支是master分支,有HEAD标识.
68fec00 commit a
e1ebcce commit a
3b65d3a commit a
202ba55 commit a
23be0b9 commit a

3. 分支文件删除创建切换分支

1. 删除分支:
[root@master 777]# git branch -d leilei
Deleted branch leilei (was 8ed3d9a). 2. 创建分支:
[root@master 777]# git branch leilei
[root@master 777]# git branch
leilei
* master 3. 切换分支:
[root@master 777]# git checkout leilei
Switched to branch 'leilei'
[root@master 777]# git branch
* leilei
master

4. 分支文件管理

1.分支同步master的文件
master创建文件:
[root@master 777]# touch master-999
[root@master 777]# git add .
[root@master 777]# git commit -m master-999 2. 分支同步master文件:
命令: git merge master
[root@master 777]# ls #查看是否有文件
[root@master 777]# git merge master #同步master的文件
Updating b1b3da5..5a6a8f5
Fast-forward
master-999 | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 master-999
[root@master 777]# ls
master-999 #删除分支中文件
git rm -f [文件名]
git commit -m "remove [文件名]" ## 文件名只是注释说明,说明这次提交删除了哪个文件. ##注意要点
1. 不同分支文件不会被看到
2. 创建文件后需要 git commit -m "文件名" 才会被提交
3. git branch 可以查看现有分支
4. 切换分支使用 git checkout [分支名]
5. 删除分支需要使用 [ git branch -d [分支名] ],当前分支下无法删除当前分支,需要切换分支后执行删除操作.

5. 分支切换,文件的查看合并git:

git来取其他分支代码:
git checkout master #切换分支
git branch #查看分支
git push origin xxx #提交到指定分支. 1. master 分支代码提交与合并 1.1 代码提交到chenleilei分支:
[root@master 777]# touch leilei001
[root@master 777]# echo leilei001 >> leilei001
[root@master 777]# git add .
[root@master 777]# git commit -m "leilei001"
[leilei 2516f73] leilei001
1 file changed, 1 insertion(+)
create mode 100644 leilei001
[root@master 777]# git push origin chenleilei 提交到chenleilei分支 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master:refs/for/master 1.2 chenleilei分支上执行下面命令是让chenleilei代码合并到master中:
git checkout master
git merge leilei
#注意 这只有在 master分支下才可以执行合并操作.
--------------------------------------

6. git diff 对比代码

案例: 使用 echo "1111111" >>1.txt 然后不执行git add . 和执行 git add . 后出现的以下两种情况:

6.1 git diff [本地工作目录和暂存区对比]

[root@master 777]# echo 1111111 >> 1.txt
[root@master 777]# git diff 1.txt
diff --git a/1.txt b/1.txt
index 8ad79bd..af2c243 100644
--- a/1.txt
+++ b/1.txt
@@ -1 +1,2 @@
1111111
+1111111
有输出说明他是使用本地工作目录和暂存区对比. [root@master 777]# git add 1.txt # 提交到暂存区后
[root@master 777]# git diff 1.txt # 没有输出
没有输出,说明它是在用本地工作目录和暂存区进行对比

6.2 git diff --cached [本地仓库和暂存区对比]

6.1中 提交后没有输出,此时使用  git diff --cached 来进行对比
[root@master 777]# git diff --cached 1.txt
diff --git a/1.txt b/1.txt
index 8ad79bd..af2c243 100644
--- a/1.txt
+++ b/1.txt
@@ -1 +1,2 @@
1111111
+1111111
提交后进行对比有输出,说明他是 使用本地仓库和暂存区进行对比 总结:
创建文件后. 他的文件就存储在本地工作目录, 使用git add 提交了数据后他就会被提交到 本地仓库.
此时使用, git diff --cached 进行对比后, 就是使用本地仓库和暂存区进行对比.因为有过修改,所以必定有修改的输出提示.

7. 分支合并

7.1 不同内容的合并

分支合并:master修改 master.txt文件[root@master 777]# echo  master >>master[root@master 777]# git add .[root@master 777]# git commit -m "master"[master e284598] master 1 file changed, 1 insertion(+) create mode 100644 master1. 其他分支修改master.txt文件:[root@master 777]# git checkout leilei Switched to branch 'leilei'[root@master 777]# git merge master gtiMerge made by the 'recursive' strategy. master | 1 + 1 file changed, 1 insertion(+) create mode 100644 master[root@master 777]# cat master master2. leilei分支添加内容到 master[root@master 777]# echo  111 >> master 3. 合并到分支[回到需要合并的分支,比如我要合并到master分支,那么先要回到master][root@master 777]# git checkout master M	masterSwitched to branch 'master'[root@master 777]# git merge leilei Updating e284598..edc2539Fast-forward[root@master 777]# cat master  master111              #<<<------- 在leilei分支上修改的内容合并到了 master分支中的文件里.

7.2 [多个分支同时修改一个文件]

都有一个 master.txt 文件的时候进行合并解决冲突办法.

master 和 leilei 分支分别创建 master.txt 并添内容:master :[root@master 777]# git checkout  master Switched to branch 'master'[root@master 777]# touch  master.txt[root@master 777]# echo master >master.txt[root@master 777]# cat master.txt master[root@master 777]# git add .[root@master 777]# git commit -m "modify a"leilei : [root@master 777]# git checkout leileiSwitched to branch 'leilei'[root@master 777]# echo leilei >master.txt[root@master 777]# cat master.txtleilei[root@master 777]# git add .[root@master 777]# git commit -m "modify"#leilei分支合并到master:#回到master执行合并:[root@master 777]# git checkout master Switched to branch 'master'[root@master 777]# git branch   leilei* master#执行合并:[root@master 777]# git merge leilei Auto-merging master.txtCONFLICT (add/add): Merge conflict in master.txtAutomatic merge failed; fix conflicts and then commit the result.  ##提示合并失败了,文件有冲突需要解决.#有冲突的情况下查看状态:[root@master 777]# git status# On branch master# You have unmerged paths.#   (fix conflicts and run "git commit")## Unmerged paths:#   (use "git add <file>..." to mark resolution)##	both added:         master.txt#no changes added to commit (use "git add" and/or "git commit -a")#提示冲突内容已经写入到了文件中.需要自己手工解决冲突:[root@master 777]# cat master.txt<<<<<<< HEAD                         ## 提示master分支内容是master ,leilei分支内容是 leileimaster                               ## 他们内容不一致,需要手工确认.如果需要把两个都保留可以做下面的修改=======leilei>>>>>>> leilei#文件内容修改前:<<<<<<< HEADmaster=======leilei>>>>>>> leilei#文件内容修改后:masterleilei保存修改文件.[注意:这里是系统提示冲突文件,自己要修改成自己觉得对的情况,我上面因为只是合并两行,所以我觉得 master leilei 这两行都应该在,所以其他内容我就删除了,这样就可以了,改好了执行保存就好.]#修改完成后继续提交:[root@master 777]# git add .[root@master 777]# git commit  -m "change file"[master 3dde069] change file#此时再查看工具区:[root@master 777]# git status# On branch master  nothing to commit, working directory clean   ##已经没有报错了.#这些问题可以在log中展现出来:[root@master 777]# git log  --oneline --decorate33ae380 Merge branch 'master' into leilei5124e49 ac1ab865 a2860c89 abf5f3ed master585e89b modify leilei2ca9a86 aedc2539 Merge branch 'master' into leileie284598 master

002. git 分支管理的更多相关文章

  1. GIT分支管理模型

    GIT分支管理模型 link: git-branching-model 主分支(Main branches) 项目两个常驻分支: master 主干分支(锁定),仅用于发布新版本,平时不能在上面干活, ...

  2. Git 分支管理是一门艺术

    转载: Git 分支管理是一门艺术 1 要确保:团队成员从主分支(master)获得的都是处于可发布状态的代码,而从开发分支(develop)应该总能够获得最新开发进展的代码. 2 "辅助分 ...

  3. Git 分支管理详解

    大纲: 1.前言 2.创建分支 3.切换分支 4.合并分支(快速合并) 5.删除分支 6.分支合并冲突 7.合并分支(普通合并) 8.分支管理策略 9.团队多人开发协作 10.总结 注,测试机 Cen ...

  4. Git分支管理[三]

    标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 git分支管理命令 git branch #创建分支 git branch -v # ...

  5. Git—分支管理

    Git—分支管理 分支学习:branch称为分支,默认仅有一个名为master的分支.一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支. branch相关常用 ...

  6. [转载]理解 Git 分支管理最佳实践

    原文 理解 Git 分支管理最佳实践 Git 分支有哪些 在进行分支管理讲解之前,我们先来对分支进行一个简单的分类,并明确每一类分支的用途. 分支分类 根据生命周期区分 主分支:master,deve ...

  7. 02: git分支管理

    目录:GIT其他篇 01: git & github 02: git分支管理 目录: 1.1 Git常用命令 1.2 主要分支(保护分支) 1.3 特性分支:feature (开发分支合并到d ...

  8. git 分支管理——多人协作

    git 分支管理--多人协作 一般一个项目有一个master主分支,还有一个develop开发分支.主要是在develop分支上协作开发,然后merge合并到master主分支上. 当从远程仓库克隆时 ...

  9. Git分支管理及合并

    Git分支管理   建立分支 git branch [name]   切换到分支 git checkout [name]   查看有哪些分支 git branch   比较分支 git diff [b ...

  10. git学习------>Git 分支管理最佳实践

    ps:本文转载于 : https://www.ibm.com/developerworks/cn/java/j-lo-git-mange/index.html Git 是目前最流行的源代码管理工具.大 ...

随机推荐

  1. 什么是ip协议一

    前言 两节结束,为网络底层系列做铺垫. 首先来看一张图: IOS有七层,但是我们可以简化层4层,ip属于传输层,可以说是非常重要,下面简单的做一个介绍. 正文 ip的介绍: 1.ip是tcp/ip 协 ...

  2. 力扣586(MySQL)-订单最多的客户(简单)

    题目: 编写一个SQL查询,为下了 最多订单 的客户查找 customer_number . 测试用例生成后, 恰好有一个客户 比任何其他客户下了更多的订单. 查询结果格式如下所示. 进阶: 如果有多 ...

  3. 动态尺寸模型优化实践之Shape Constraint IR Part II

    简介: 在本系列分享中我们将介绍BladeDISC在动态shape语义下做性能优化的一些实践和思考.本次分享的是我们最近开展的有关shape constraint IR的工作,Part II 中我们将 ...

  4. 如何构建企业出海的"免疫力"?深入解读阿里云CDN安全能力

    简介: 随着信息技术快速发展与应用,产业数字化和智能化趋势正日益加深,企业信息安全与防护被提升到前所有未有的高度.阿里云CDN经过10多年的技术发展时间,已逐步构筑一个边缘+云的安全网络立体防护体系, ...

  5. 网易云音乐音视频算法的 Serverless 探索之路

    ​简介: 基于音视频算法服务化的经验,网易云音乐曲库团队与音视频算法团队一起协作,一起共建了网易云音乐音视频算法处理平台,为整个云音乐提供统一的音视频算法处理平台.本文将分享我们如何通过 Server ...

  6. 阿里云容器服务全面升级为 ACK Anywhere,让云的边界拓展至企业需要的每个场景

    ​简介: 2021 年 9 月 26 日上海阿里云计算峰会上,阿里巴巴研究员.阿里云云原生应用平台负责人丁宇宣布,阿里云容器服务全面升级为 ACK Anywhere,让企业在任何需要云的地方,都能获得 ...

  7. [FAQ] Error occured while trying to proxy to: xx.xx.x.xx:xx/xx

    遇到这种情况,要知道证明访问并未到达指定的服务地址. 可能原因有未启动.端口占用 等等,请逐一排查. Tool:ChatAI Refer:Proxy_Error Link:https://www.cn ...

  8. 每天5分钟复习OpenStack(十三)存储缓存技术Bcache

    Ceph作为一个分布式存储,在项目中常见的形态有两者,一种是采用 SSD 或NVME 磁盘做Ceph的日志盘,使用SATA磁盘来做数据盘.这样的好处是比较经济实惠.另一种则是全部采用 SSD 或NVM ...

  9. docker-compose安装EFK

    一.环境 IP 系统 配置 版本 192.168.10.100 Centos7.9 2核4G Docker Compose version v2.19.1.EFK-7.17.11 EFK版本是试用版本 ...

  10. k8s应用---持久化存储和StorageClass(10)

    一.简介: 在 k8s 中为什么要做持久化存储? 在 k8s 中部署的应用都是以 pod 容器的形式运行的,假如我们部署 MySQL.Redis 等数据库,需要 对这些数据库产生的数据做备份.因为 P ...