Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 Git 的默认分支名字是 master
克隆某个分支
git clone -b <指定分支名> <远程仓库地址>
从当前分支创建一个新的分支命名为feature/分支名
git checkout -b 分支名
切换到某个新的远程分支:
直接git checkout+分支名
分支创建
比如,创建一个 testing 分支, 你需要使用 git branch 命令:
git branch testing
问题:分支创建的原理是什么
🔥git branch 命令仅仅 创建 一个新分支,并不会自动切换到新分支中去🔥
HEAD 指向当前所在的分支,可以简单地使用 git log 命令查看各个分支当前所指的对象。 提供这一功能的参数是 --decorate
git log --decorate
切换分支
要切换到一个已存在的分支,你需要使用 git checkout 命令,现在切换到新创建的 testing 分支去:
git checkout testing // 切换到testing分支
这样 HEAD 就指向 testing 分支了**,想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数**
你可以简单地使用 git log 命令查看分叉历史。 运行 git log --oneline --decorate --graph --all ,它会输出你的提交历史、各个分支的指向以及项目的分支分叉情况。(输入q可以退出重新输入命令)
分支的新建与合并场景
让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤:
- 开发某个网站。
- 为实现某个新的用户需求,创建一个分支。
- 在这个分支上开展工作。
正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理: - 切换到你的线上分支(production branch)。 2. 为这个紧急任务新建一个分支,并在其中修复它。
- 在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。
- 切换回你最初工作的分支上,继续工作
hotfix分支是bug修复区,feature是功能分支
查看远程有哪些分支:git branch -r
拉取远程分支到本地分支
git pull <远程主机名> <远程分支名>:<本地分支名>
变基(rebase)
在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase
你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上
github创建一个新的分支并推送到远程
将新的分支推送到github上时会自动弹出一个提示,可以将feater分支合并到main分支上面
同意合并之后feater分支的内容就会合并到main分支上面(这其中也会有冲突检查)
推送成功之后就可以看到刚刚提交的feater分支了
git stash
有时,当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态, 而这时你想要切换到另一 个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对
这个问题的答案是 git stash 命令
贮藏(stash)会处理工作目录的脏的状态——即跟踪文件的修改与暂存的改动——然后将未完成的修改保存到一个栈上, 而你可以在任何时候重新应用这些改动(甚至在不同的分支上)。
idea中切换分支的方式:
git回退代码到某个版本
####方法一
git reset --hard + 回退的版本号
这个回退的版本号可以在gitlab页面中去找
把git的HEAD指针指向到 commit 对应的版本,本地文件内容不会被回退
方法二
git reset --hard + 回退的版本号
具体版本号的查看参考上面的方法一
评论区