IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git(8)-分支 -> 正文阅读

[开发工具]Git(8)-分支

分支操作命令概览

git branch       # 列出版本库中的分支
git branch -r    # 列出远程跟踪分支
git branch -a    # 列出版本库中的分支和远程跟踪分支
git branch branchname1	  # 新建一个branchname1 分支
git checkout branchname1  # 切换到branchname1分支(又叫检出xxx分支)
git checkout -b newbranchname # 新建一个分支,并切换到该分支
git branch -d branchname2   # 删除分支

分支是软件项目中启动一条单独开发线的基本方法。

**分支-**动态名字,随着每次的提交移动,跟随你持续开发的过程。
**标签-**静态名字,不随着时间的推移而改变,一旦应用不应该对它做任何改动,可用于标识拥有关键差异特征的提交点位。

可以使用同一个名字来命名分支和标签,但是不推荐。

1. 分支名

默认分支是master(正在改为main),分支名字始终指向改分支上的最近提交版本。
使用层次分支- bug/pr-1023, bug/pr-17 这种层次分支支持通配符选择。

路径层次分支命名具有一些通用的规则,分支命名规则由 git check-ref-format 底层命令强制检测。

2. 创建分支-git branch

在任何时候,版本库中只有一个分支是活动的。活动分支决定了工作目录里的检出文件。
当需要把本地分支发布,需要显示指明发布分支的名称。

git branch prs/pr-1138 [starting commit]   # 基于starting commit 新建 prs/pr-1138分支
# starting commit 缺省, 默认为当前分支上的最近提交
# git branch 创建分支后,需要显示才会切换为

git branch 不带分支名称时,可用于列出版本库中的分支名,带星号的分支名标识当前的活动分支。

git branch       # 列出版本库中的分支
git branch -r    # 列出远程跟踪分支
git branch -a    # 列出版本库中的分支和远程跟踪分支

3. 查看分支-git show-branch

按时间顺序(不知道是啥顺序)列出对一个或多个分支有贡献的提交。同样可以带-r,和-a两种可选参数。 (有点没看懂这个命令的作用,回头再看一遍)

git show-branch       					# 该输出被破折号分为两个部分,.....
git show-branch bug/pr-1 bug/pr-2       # 查看两个分支的提交信息,支持通配符匹配更多的分支

4. 检出分支

工作目录一次只能反应一个分支。git checkout用于切换不同的分支。它改变了工作树文件和目录结构来匹配切换分支。git checkout branchname 实现改了通过分支名来检出分支头部。

4.1 有未提交的修改时进行检出

工作目录里未被追踪的文件的目录始终会被置之不理,git不会删除或修改他们。如果一个文件在本分支上修改了,但是没有被新分支追踪,git 会发出错误信息,并拒绝检出到目标分支。

$ git checkout dev
error: Your local changes to the following files would be overwritten by checkout:
	git_checkout_test
Please commit your changes or stash them before you switch branches.
Aborting

$ cat git_checkout_test
git checkout test
$ git diff git_checkout_test
diff --git a/git_checkout_test b/git_checkout_test
index e69de29..9747ad6 100644
--- a/git_checkout_test
+++ b/git_checkout_test
@@ -0,0 +1 @@
+git checkout test

$ git show dev:git_checkout_test            # 查看另一个分支中的文件
fatal: path 'git_checkout_test' exists on disk, but not in 'dev'

解决方法
1.提交新的更改到当前分支
2.提交新的更改到另一分支:
a). stash
b). 合并变更到不同的分支。

4.2 合并变更到不同的分支git checkout -m

-m 选项将 本地修改合并到目标分支的工作目录中,并留下合并冲突指示[可能会没有],我们需要进一步解决存在的冲突。

% git checkout dev
error: Your local changes to the following files would be overwritten by checkout:
	git_checkout_test
Please commit your changes or stash them before you switch branches.
Aborting
% git checkout -m dev
A	git_checkout_test
M	hello.txt
Switched to branch 'dev'
# dev 分支上修改文件,再想切换回master分支, 执行合并切换操作不行啊。
% git checkout -m master
fatal: cannot continue with staged changes in the following files:
git_checkout_test hello.txt

在master 分支中编辑文件,突然意识到需要将所有的修改提交到dev2分支上,那么就新建并切换到新的分支上。

%  git checkout -b dev2
Switched to a new branch 'dev2'
% git status
On branch dev2
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:   git_checkout_test

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

5. 分离HEAD 分支

git checkout branchname 实现改了通过分支名来检出分支头部。git checkout 可以检出任何提交,如果检出的提交不是该分支的头部,Git 会创建一个分离的HEAD(detached HEAD),以下的情况,Git都会创建一个分离的HEAD:

  1. 检出的提交不是分支的头部
  2. 检出一个追踪分支
  3. 检出一个标签引用的提交
  4. 使用git bisect 操作
  5. 使用git submodule update命令

如果1: 想要保留在detached HEAD状态下的开发内容,那就新建一个分支。

git checkout -b new_branch

如果2: 只是在detached HEAD状态下验证某些东西,不想保存相关操作,直接切换回某个一分支即可。

git checkout branchname

6.删除分支

git branch -d branchname2

默认规则1:不能删除当前分支。
默认规则2: 不会允许删除一个 包含不存在当前分支提交的分支。就是说,要删除的分支不是当前分支的祖先,那么删除该分支将会造成某些开发不可留。但是可以通过 -D强制删除,可以选择在删除之前进行一次合入操纵。

git branch -D branchname2
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章           查看所有文章
加:2021-10-13 22:27:49  更:2021-10-13 22:27:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 14:08:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计