git 分支操作总结

当尚不清楚项目的某项修改对项目可能造成的影响的时候,git的分支管理指令可以让使用者同时进行主线任务的开发和分支任务的修改。

IDEA上的git操作

        首先强烈推荐一波IDEA上自带的git操作功能,只要按下ctrl+k,就可以将项目commit到本地暂存区,再按下ctrl+shift+k,就可以将项目推送到remote仓库中去。还可以在右下角方便的进行分支的切换,在右上角可以方便的rollback,返回到刚才修改错误的地方。同时还可以可视化查看分支结构。当然熟练操作的基础是对分支命令基础的掌握啦,那么下面我们开始吧!

分支管理相关指令

git branch:建立新的分支

git checkout:切换工作分支

git merge:合并两个分支

git branch分支的创建、删除与查询

分支创建

git branch [branch_name]:

    git branch [branch_name]用于创建新的本地分支,分支名为branch_name。需要注意的是,创建新的分支后不会自动切换到新的分支上,需要使用git checkout [branch_name]切换。

分支删除

-d:

    git branch -d [branch_name]用于删除本地名为[branch_name]分支,这个命令会检查该分支在上一次merge后是否进行了修改,存在没有合并的修改会导致删除失败。

-D:

    git branch -D [branch_name]也是删除本地名为[branch_name]分支,不同的是该指令会直接删除,不会进行检查。

    需要注意的是git branch -d与git branch -D都是删除本地分支的方法,不会影响远程仓库的分支结构。

分支查询

(null):

不带参数的git branch显示当前的分支状态,前面带"*"的分支是当前正在使用的分支。

如果git branch返回为空,那多半是没有进行第一次commit,在第一次commit时会创建master分支,在此之前使用git branch [branch_name]创建新的分支也是不可以的,会出现如下提示:

-v:

    git branch -v如下图所示,查看每个分支的最后一次commit记录。

-r:

    git branch -r仅查看远程仓库的分支结构。

-a:

    git branch -a可以查看所有分支结构,包括本地仓库和远程仓库,其中远程仓库的分支会用红色进行标识。

git checkout分支切换

首先,不同分支的文件对应不同的文件快照,当进行分支切换时所有未合并的文件都会发生变化。

创建分支后新建的文件不共享!

新建的文件不共享!

新建的文件不共享!

实验4中由于最后两个分支不进行合并,创建分支后完善代码就变得比较繁琐,必须在两个分支下来回切换修改程序(当然也是因为创建分支前没有对公共部分进行足够的完善)。实际应用中由于分支大多用于部分功能的修改,最后会进行舍弃或与master分支合并,因而不会存在类似的问题。

git checkout [branch_name]:

git checkout [branch_name] 用于切换到一个名为[branch_name]的分支。

-b:

git checkout -b [branch_name] 用于创建一个新的分支并切换到该分支,分支名为[branch_name]。

git merge分支合并

git merge [branch_name(s)]:

git merge [branch_name(s)] 命令用于将(多个)待合并分支 [branch_name(s)] 与当前正在操作的分支进行合并。合并范围是从这些分支节点的最近公共祖先开始,合并到当前节点为止。

例如,合并前分支结构如图:

在master分支上使用git merge change合并后分支结构如图:

合并过程可能出现冲突!

合并过程可能出现冲突!

合并过程可能出现冲突!

--squash:

删除将待合并分支上的所有commit(s)合并为一个未commit的节点。

例如,合并前分支结构如图:

在master分支上使用git merge --squash change后分支结构如图:

节点P包含了change分支相较于master分支的修改,且是未commit的状态。但不同于普通的merge操作的是,使用--squash参数合并的分支不会记录与change分支的继承关系,一个很明显的两个证明是:合并后使用git log显示commit记录不会包含change分支的信息;此时使用带检查的git branch -d change指令删除change分支会提示存在未合并内容。

在许多情况下使用--squash参数进行合并是更优的选择,因为大量的分支修改中的细节信息是不必要的,使用--squash参数可以保证master分支提交记录足够简洁。

--abort:

git merge --abort用于恢复出现冲突的合并操作,但未commit的操作在某些情况下(如合并过程中发生了修改)可能无法恢复。因此,合并操作前及时commit是一个良好的编程习惯。

Git 分支操作Git 版本控制系统中非常重要的功能之一,它允许开发者在同一项目上并行工作而不相互干扰。以下是关于 Git 分支的一些基本概念及其常见操作: ### 创建分支 你可以通过 `git branch` 命令查看当前所有分支,并用 `git checkout -b <branch-name>` 来创建一个新的分支同时切换到该新分支。 例如: ```bash # 查看所有的本地分支 $ git branch # 创建并且切换至新的分支 "feature-x" $ git checkout -b feature-x ``` 如果想要从指定远程分支拉取最新内容再基于此建立新分支,则可以先更新追踪信息(`git fetch`)然后使用 `git checkout --track origin/<remote-branch>` 进行快速切换;对于直接依据某个特定commit ID建枝的情况则采用 `git checkout -b new-branch commit-id`. ### 切换分支 当需要在不同版本间来回跳转时,可利用 `git switch <target-branch>` 或者较为传统的命令 `git checkout <target-branch>` 实现这一目的。这两个指令都能让你轻松地转换工作区状态而不会影响其他未提交更改(除非存在冲突)。 示例: ```bash # 跳转回 master 主干线路上继续干活儿 $ git switch main # or $ git checkout main ``` ### 合并与删除分支 完成某项任务后通常会考虑将这个特性分支合并进主线上来共享成果。这一步骤可通过运行 `git merge <source-branch>` 完成,在这里 `<source-branch>` 就是你打算融入目标环境的那个特征集合。成功合入之后记得清理现场——即移除已无实际意义的老分支,做法很简单:只需敲下 `git branch -d <merged-branch>` 即可。 样例代码如下所示: ```bash # 在main分支基础上整合来自"dev-feature"的所有变动 $ git checkout main && git pull origin main # 确保最新的主线变更点是最新的 $ git merge dev-feature # 执行融合过程... # 解决可能出现的文件差异及文本编辑器提示... # 如果一切顺利,最后就可以安心删掉已经归档的任务支线啦~ $ git push origin :dev-feature # 推送删除请求给远端仓库 (注意前缀冒号) $ git branch -D dev-feature # 强制本地清除 ``` ### 拉取和推送分支 当我们希望把个人努力分享出去让更多人看到时就需要向远程服务器同步数据了。针对已有但尚未推送到云端的新分支而言,应该首先添加远程跟踪关联关系以便后续管理更便捷高效些。为此我们运用到了 `git push –set-upstream origin <new-local-branch>`, 此举不仅完成了初次上传而且还建立了映射链接使得未来每次push都变得格外简单明快! 总结一下就是说, * 新增本地分支 -> 先做一次完整的推送 + 设定上游分支; * 日常维护阶段 -> 直接执行常规推送即可。 以上便是对 Git 中常用分支操作的一个简略介绍。掌握好这些技巧能极大提高团队协作效率和个人编码体验哦~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值