Git(8)-分支

分支

  • 1. 分支名
  • 2. 创建分支-git branch
  • 3. 查看分支-git show-branch
  • 4. 检出分支
    • 4.1 有未提交的修改时进行检出
    • 4.2 合并变更到不同的分支git checkout -m
  • 5. 分离HEAD 分支
  • 6.删除分支

分支操作命令概览

git branch       # 列出版本库中的分支
git branch -r    # 列出远程跟踪分支
git branch -a    # 列出版本库中的分支和远程跟踪分支
git branch branchname1	  # 新建一个branchname1 分支
git branch branchname3 [starting CID]   # 基于starting CID新建 branchname3分支
git checkout branchname1  # 切换到branchname1分支(又叫检出xxx分支)
git checkout -b newbranchname # 新建一个分支,并切换到该分支
git branch -d branchname2 [starting CID]  # 删除分支git checkout -- file1    # 检出索引中的文件file1
git checkout commit_x -- file1  # 检出commit_x中的提file1

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

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

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

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       					# 该输出被破折号分为两个部分,.....
* [alternate] Initial 3 line file       # 方括号中的为分支名,后面跟着最近一次提交! [master] Another file				# * 标识当前活动分支上的提交
--                                      # + 表示提交在一个分支中【说的什么话?】+ [master] Another file                # - 表示一个合并提交
*+ [alternate] Initial 3 line filegit 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_testno 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

caffe开始训练自己的模型(转载并验证过)

学习caffe中踩了不少坑&#xff0c;这里我参考了此博主的文章&#xff0c;并体会到了如何训练自己的模型&#xff1a;http://www.cnblogs.com/denny402/p/5083300.html 学习caffe的目的&#xff0c;不是简单的做几个练习&#xff0c;最终还是要用到自己的实际项目或科研中。因…

leetcode169. 多数元素

给定一个大小为 n 的数组&#xff0c;找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 思路&…

Git(9)-diff

分支1. diff in Linux/Unix2. diff in Git3. git diff 两点语法Linux/Unix 系统中存在diff 命令&#xff0c;可以用来显示两个文本/工作路径的差异。Git diff 在此基础上进行的扩展。 1. diff in Linux/Unix Linux 系统中的diff 命令&#xff1a;提供了一个文件如何转化为另一…

图像拼接(一):柱面投影+模板匹配+渐入渐出融合

这种拼接方法的假设前提是&#xff1a;待拼接的两幅图像之间的变换模型是平移模型&#xff0c;即两幅图像同名点位置之间只相差两个未知量&#xff1a;ΔxΔx 和ΔyΔy&#xff0c;自由度为2&#xff0c;模型收得最紧。所以只有所有图像都是用同一水平线或者同一已知倾斜角的摄…

图像拼接(二):OpenCV同时打开两个摄像头捕获视频

使用OpenCV实现同时打开两个USB摄像头&#xff0c;并实时显示视频。如果未检测有两个摄像头&#xff0c;程序会结束并发出“摄像头未安装好”的警告。这里推荐一个小巧的摄像头视频捕捉软件&#xff1a;amcap&#xff0c;使用它可以方便的检查每个摄像头是否能正常工作。 捕获…

Git(10)-merge

Merge1. 无冲突合并2. 有冲突合并-手动解决3. git diff in merge4. 废弃合并5. 合并策略merge相关的操作的命令 git checkout master git merge alternate # 解决冲突 ..... git add file_1 git commit -m "Add slternate line 5, 6" git reset --hard HEAD # b…

elasticsearch的Linux下安装报错问题解决

1.启动报错如下: vim /etc/security/limits.conf 然后修改如下 * soft nofile 65536 * hard nofile 65536sudo vi /etc/pam.d/common-session 添加 session required pam_limits.so sudo vi /etc/pam.d/common-session-noninteractive 添加 session required pam_limits.so…

leetcode120. 三角形最小路径和

给定一个三角形&#xff0c;找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如&#xff0c;给定三角形&#xff1a; [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11&#xff08;即&#xff0c;2 3 5 1 11&#xff0…

Elasticsearchan相关插件和工具安装

1、下载elasticsearch-head的源码包 地址&#xff1a;https://github.com/mobz/elasticsearch-head/releases 2、安装node运行环境 地址&#xff1a;https://nodejs.org/en/download/ 3、安装完node之后编译elasticsearch-head 执行npm install -g grunt-cli编译源码 执行…

Git(11)-cherry-pick、reset、rebase

更改提交&#xff0c;版本回退1.get reset 重置HEAD指针的指向2.git cherry-pick3.git revert4.git commit --amend修改提交5.git rebase 变基提交5.1 git rebase --onto5.2rebase 产生冲突&#xff0c;解决冲突/终止变基5.3git rebase -i6. rebase Vs mergegit 提供了【修改】…

Elasticsearch集群节点配置详解

注意&#xff1a;如果是在局域网中运行elasticsearch集群也是很简单的&#xff0c;只要cluster.name设置一致&#xff0c;并且机器在同一网段下&#xff0c;启动的es会自动发现对方&#xff0c;组成集群。 三、配置浅涉 elasticsearch的config文件夹里面有两个配置文件&#…

MongoDB修改器使用

欢迎关注我的新微信公众号 ipgame,有什么问题可以提供交流的平台,欢迎大家讨论。 对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高效的进行文档更新。更新修改器是中特殊的键, 用来指定复杂的操作,比如增加、删除或者调整键,还…

Git(12)-stash, reflog

git stash1. git stash2. reflog命令概览git stash save "WIP:xxxxx" # save后可以跟笔记&#xff0c;WIP:work in process git stash list # 查看存储状态栈的条目 git stash pop # 当前工作目录和索引还原至最近一次save操作的内容…

cmake生成Win64位工程

使用cmake编译64的dll 一开始使用cmake --build .来生成了dll&#xff0c;在导入到java项目中使用的时候&#xff0c;才发现是32位的。导致程序不能正常运行&#xff0c;报错如下&#xff1a; Exception in thread "main" java.lang.UnsatisfiedLinkError Cant load…

leetcode 106. 从中序与后序遍历序列构造二叉树

根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 中序遍历 inorder [9,3,15,20,7] 后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树&#xff1a; 3 / \ 9 20 / \ 15 7 思路&#xff1a;和前…

Mat矩阵(图像容器)的创建及CV_8UC1,CV_8UC2等参数详解

一&#xff09;Mat矩阵(图像容器)创建时CV_8UC1,CV_8UC2等参数详解 1--Mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类 2--创建一个Mat对象的方法很多 3--使用Mat图像容器类创建Mat类的对象 //! default constructor Mat(); //! constructs …

TensorFlow(1)-模型相关基础概念

TensorFlow-11.Graph对象2.Session对象3.Variabels变量4. placeholders与feed_dict5. tf.train.Saver() 模型参数保存、加载Tensorflow 中文官网教程–2.0版本的官方教程 TensorFlow教程&#xff1a;TensorFlow快速入门教程&#xff08;非常详细&#xff09; pytorch Vs tensor…

memcache的使用入门C++代码

下载源码编译&#xff0c;memcached就是生成的主程序&#xff0c;启动可指定端口&#xff0c;memcached作为server端&#xff0c;依然是我们熟悉的cs模式&#xff0c;使用两个client一个setkey&#xff0c;一个getkey一百万个做测试。 ./memcached -d -m 300 -p 11211 -u root…

leetcode78 子集

给定一组不含重复元素的整数数组 nums&#xff0c;返回该数组所有可能的子集&#xff08;幂集&#xff09;。 说明&#xff1a;解集不能包含重复的子集。 示例: 输入: nums [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 思路&…

Fiddler抓包工具使用

先下载Fiddler 欢迎关注我的新微信公众号 ipgame&#xff0c;有什么问题可以提供交流的平台&#xff0c;欢迎大家讨论。 电脑最好是笔记本&#xff0c;这样能和手机保持统一局域网内&#xff1b;其他不多说&#xff0c;直接说步骤了。 一.对PC&#xff08;笔记本&#xff0…