git-入门到熟悉_分支管理(代码片段)

小小工匠 小小工匠     2022-10-22     114

关键词:

文章目录


Pre

Git - 入门到熟悉_Git基本概念与核心命令

接下来,我们聊一聊Git的分支管理

使用分支意味着可以从开发主线上分离开来,然后在不影响主线的同时继续工作。


常用命令

#查看当前分支
git branch [-avv]
#基于当前分支新建分支
git branch <branch name>
#基于提交新建分支
git branch <branch name> <commit id>
$ git branch -d dev
#切换分支
git checkout <branch name>
#合并分支
git merge <merge target>
#解决冲突,如果因冲突导致自动合并失败,此时 status 为mergeing 状态.
#需要手动修改后重新提交(commit) 


为什么需要分支


查看分支信息

大家先拆下,你本地的工程有几个分支 ?????


artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ pwd  
/d/opt/gitdemo/gitProject

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch  # 查看本地分支 
* master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -avv    # 查看所有分支 包含远程分支 ,可以看到 版本号一致 
* master                5e6d25b [origin/master] 第二次提交
  remotes/origin/master 5e6d25b 第二次提交

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ echo '第三次提交' >> README.MF  # 修改本地文件

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -avv   # 查看所有分支 包含远程分支 ,因为修改未提交,可以看到 版本号还是一致 
* master                5e6d25b [origin/master] 第二次提交
  remotes/origin/master 5e6d25b 第二次提交

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.MF

no changes added to commit (use "git add" and/or "git commit -a")

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git commit -am '第三次提交'   # 提交本地修改 到  local repository 
warning: LF will be replaced by CRLF in README.MF.
The file will have its original line endings in your working directory
[master 2d23d8a] 绗笁娆℃彁浜? 1 file changed, 1 insertion(+)

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -avv  # 查看所有分支 包含远程分支 本地已修改提交到本地仓库,所以和远端的仓库版本号出现了不一致 
* master                2d23d8a [origin/master: ahead 1] 第三次提交
  remotes/origin/master 5e6d25b 第二次提交

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$


artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git checkout  remotes/origin/master   # 切换到远程分支  
Note: switching to 'remotes/origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 5e6d25b 绗簩娆℃彁浜?
artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject ((5e6d25b...))
$ cat README.MF   # 查看远程分支的文件内容  ,可以看到和本地不一致 
artisan git demo
new modify content

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject ((5e6d25b...))
$

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject ((5e6d25b...))
$ git checkout  master  #  切换到本地master分支  
Previous HEAD position was 5e6d25b 绗簩娆℃彁浜?Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ cat README.MF  # 查看本地master分支的文件内容  ,可以看到和远端不一致 
artisan git demo
new modify content
第三次提交

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$



artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git push  # 提交到Git Remote 
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 319 bytes | 319.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/yangshangwei/gitProject.git
   5e6d25b..2d23d8a  master -> master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -avv  # 再此查看所有分支,发现经过push后又一致了。  
* master                2d23d8a [origin/master] 第三次提交
  remotes/origin/master 2d23d8a 第三次提交

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$
 


总结一下: -


artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ echo 'four ' >> README.MF   # 修改本地文件

 

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git commit -am '第四次提交'   # 提交到本地 local repository 
warning: LF will be replaced by CRLF in README.MF.
The file will have its original line endings in your working directory
[master 9f302ff] 绗洓娆℃彁浜? 1 file changed, 1 insertion(+)

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch  # 查看当前分支
* master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -av   # 查看所有分支 
* master                9f302ff [ahead 1] 第四次提交
  remotes/origin/master 2d23d8a 第三次提交

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -avv   # 查看所有分支 详细信息    关联信息  master 关联origin/master
* master                9f302ff [origin/master: ahead 1] 第四次提交
  remotes/origin/master 2d23d8a 第三次提交

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$


创建分支

  1. 基于当前分支,创建一个新分支
  2. 基于远程分支,创建一个新分支
  3. 基于一个提交,创建一个新分支
  4. 基于Tag ,创建一个新分支

本质上所有的新分支的常见都是 基于提交点来创建的。

基于当前分支,创建一个新分支

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git  branch  
* master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch dev master  # 根据master分支 创建dev 分支  

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -av  # 查看所有分支 
  dev                   9f302ff 第四次提交
* master                9f302ff 第四次提交
  remotes/origin/master 9f302ff 第四次提交

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch
  dev
* master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -a
  dev
* master
  remotes/origin/master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -avv
  dev                   9f302ff 第四次提交
* master                9f302ff [origin/master] 第四次提交
  remotes/origin/master 9f302ff 第四次提交

 


基于远程分支,创建一个新分支

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch baseRemote remotes/origin/master   # 基于远程分支 remotes/origin/maste 创建一个分支 baseRemote 

Branch 'baseRemote' set up to track remote branch 'master' from 'origin'.

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch
  baseRemote
  dev
* master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$



基于一个提交,创建一个新分支

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git log
commit 9f302ffcd77e703b02e9d185d085484f1e298c0a (HEAD -> master, origin/master, dev, baseRemote)
Author: yangshangwei <yswcomeon@gmail.com>
Date:   Mon Aug 15 00:34:03 2022 +0800

    第四次提交

commit 2d23d8a4a8b9f79f893ce7ef594624929b57d31c
Author: yangshangwei <yswcomeon@gmail.com>
Date:   Mon Aug 15 00:24:25 2022 +0800

    第三次提交

commit 5e6d25b9e0f1bae23ce98facecf79ad4e97df174
Author: yangshangwei <yswcomeon@gmail.com>
Date:   Sun Aug 14 23:55:34 2022 +0800

    第二次提交

commit 4ac59bd9186592662350d23f1cdfbe5c4f21f329
Author: yangshangwei <yswcomeon@gmail.com>
Date:   Sun Aug 14 23:02:58 2022 +0800

    init commit

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch baseOnCommit 4ac59bd9186592662350d23f1cdfbe5c4f21f329  # 基于第一次提交创建一个分支 baseOnCommit 

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -av
  baseOnCommit          4ac59bd init commit
  baseRemote            9f302ff 第四次提交
  dev                   9f302ff 第四次提交
* master                9f302ff 第四次提交
  remotes/origin/master 9f302ff 第四次提交

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)

基于Tag ,创建一个新分支


删除分支 git branch -d


artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch
  baseOnCommit
  baseRemote
  dev
* master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -d baseOnCommit  # 删除1个 
Deleted branch baseOnCommit (was 4ac59bd).

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch
  baseRemote
  dev
* master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch -d baseRemote   dev  # 删除多个 
Deleted branch baseRemote (was 9f302ff).
Deleted branch dev (was 9f302ff).

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch
* master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$

切换分支 git checkout


artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git branch dev master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (master)
$ git checkout dev
Switched to branch 'dev'

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (dev)
$ git branch
* dev
  master

artisan@LAPTOP-JF3RBRRJ MINGW64 /d/opt/gitdemo/gitProject (dev)
$

注意看前面的 * 号

git-入门到熟悉_分支管理(代码片段)

...;创建一个新分支删除分支gitbranch-d切换分支gitcheckoutPreGit-入门到熟悉_Git基本概念与核心命令接下来,我们聊一聊Git的分支管理使用分支意味着可以从 查看详情

git-入门到熟悉_日志管理(代码片段)

文章目录Pre常用命令演示PreGit-入门到熟悉_Git基本概念与核心命令Git-入门到熟悉_分支管理Git-入门到熟悉_远程仓库管理在使用Git提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用gitlog命令查... 查看详情

git-入门到熟悉_日志管理(代码片段)

文章目录Pre常用命令演示PreGit-入门到熟悉_Git基本概念与核心命令Git-入门到熟悉_分支管理Git-入门到熟悉_远程仓库管理在使用Git提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用gitlog命令查... 查看详情

git-入门到熟悉_远程仓库管理(代码片段)

...建仓库gitProject2上传至远程新仓库上传至远程原仓库PreGit-入门到熟悉_Git基本概念与核心命令Git-入门到熟悉_分支管理常用命令#查看远程配置gitremote[-v]#添加远程地址gitremoteaddoriginhttp:xxx.xxx#删除远程地址gitremoteremoveorigin#上传新分... 查看详情

git-入门到熟悉_远程仓库管理(代码片段)

...建仓库gitProject2上传至远程新仓库上传至远程原仓库PreGit-入门到熟悉_Git基本概念与核心命令Git-入门到熟悉_分支管理常用命令#查看远程配置gitremote[-v]#添加远程地址gitremoteaddoriginhttp:xxx.xxx#删除远程地址gitremoteremoveorigin#上传新分... 查看详情

git-入门到熟悉_git基本概念与核心命令(代码片段)

文章目录Git概述GitvsSVN存储方式使用方式管理模式Git核心命令1.GIT客户端安装配置2.GIT的基本使用2.1git项目创建等操作常用命令列表本地添加/删除本地提交gitadd到localcachegitcommit到localrepositorygitpush到remotegitrepository2.2git项目的克隆2.... 查看详情

[git]3_分支管理(代码片段)

目录创建与合并分支解决冲突分支管理策略不使用Fastforward模式分支策略Bug分支Feature分支学习资源来自廖雪峰的Git教程本文简短记忆学习内容,主要是使用命令,方便以后查看,完整学习请查看廖雪峰Git教程操作过程在Ubuntu18.04... 查看详情

git的入门到精通(代码片段)

git教程文章目录git教程1.版本管理工具概念2.版本管理工具介绍2.1版本管理发展简史(维基百科)2.1.1SVN(SubVersion)2.1.2Git3.Git发展简史4.Git的安装4.1git的下载4.2安装5.Git工作流程5.1Git初始化5.2git流程5.2.1流程图5.2.2概念即详解6.Git的基本... 查看详情

git分支管理(代码片段)

git分支管理查看分支,创建分支,切换分支(apeng)在apeng分支下创建文件apeng1.txt提交给服务端切换到master分支下,查看apeng1.txt有没有在master分支下(分支之间是相互隔离开的)将apeng分支合并到master分支上1.先切换到master分支2.将apeng... 查看详情

git远程分支管理(代码片段)

git远程分支管理使用分支的原则master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并到master开发人员应该在dev的基... 查看详情

玩转git入门篇(代码片段)

最近项目使用到Git管理项目,所以就学习了一番,随然网上关于Git的文章铺天盖地,我还是整理下总结下自己学习Git相关笔记,希望也能帮助到需要他的小伙伴们,O(∩_∩)O~简介Git是分布式版本控制和源代码管理系统,重点使用... 查看详情

git入门到高级系列2-git高级操作(代码片段)

视频课程地址腾讯课堂git清理gitclean命令用来从你的工作目录中删除所有没有tracked过的文件。命令说明gitclean-n告诉你哪些文件会被删除.记住他不会真正的删除文件,只是一个提醒。gitclean-d删除未跟踪的目录gitclean-f删除当前目录... 查看详情

git内容补充-git零基础快速入门-苏玲(代码片段)

https://git-scm.com/book/zh/v2git历史集中式版本控制管理:cvs、svn分布式版本控制管理:git基本命令gitconfig--list--global:查看git配置gitinitprojectname:新建仓库工作目录-暂存区-版本历史gitaddfilename:把文件从工作目录放到暂存区(可被git... 查看详情

git分支管理(代码片段)

...二、创建.gitignore文件(可选)三、提交到本地仓库四、创建分支五、查看、切换分支六、提交到远程分支上一、初始化git仓库cd[项目目录下]gitinit二、创建.gitignore文件(可选)项目目录下touch.gitignorevim.gitignore三、提交到本地仓库.表... 查看详情

git管理(非常杂乱)(代码片段)

git分支管理gitbranch?查看分支??gitbranchnewch?创建新的分支,创建后查看新的分支[[email protected]monice]#gitbranchnewch[[email protected]monice]#gitbranch*masternewchgitcheckoutnewch?切换分支到newch下,切换分支后再使用gitbranch查看到 查看详情

git分支管理(代码片段)

1.Git分支管理的一些基本命令:查看分支:gitbranch创建分支:gitbranch<name>切换分支:gitcheckout<name>创建+切换分支:gitcheckout-b<name>合并某分支到当前分支:gitmerge<name>删除分支:gitbranch-d<name>2.查看分支合并情... 查看详情

5分钟入门git模式开发(代码片段)

本文由云+社区发表作者:唐维黎导语基于gui工具TortoiseGit让你快速进入git开发模式。目前项目已逐步从svn移步到git开发模式,其中也针对git统一协议了适合git的开发规范,最重要一点就是分支模型的,为了规范开发,不直接在主... 查看详情

git分支实战入门详细图解(代码片段)

现在我们模拟一个简单的分支和合并案例,其中工作流可供真实项目借鉴。(1)在master开展工作(2)为新的需求创建分支(3)在新的分支上展开工作这时,你接到一个电话,说项目有一个严重的问题需要紧急修复。你随后会这... 查看详情