idea中git的简单使用及git分支

2023-11-12

这篇文章简单介绍了git,着重介绍了分支概念和idea中git的简单使用

提问题

  1. git是啥?
  2. git的分支概念
  3. idea中git的使用
  4. git仓库
  5. git命令
  6. git安装
  7. 参考文章

git是个啥?

分布式版本管理工具。

git的前生今世:git是由Linus发明的,基于C语言的;2005年左右,事情的大概就是,以前有个公司开发了开源的分布式版本控制系统 BitKeeper,供Linux 开源社区使用,但是由于某些原因不想开源了,反悔了,而这个时候大家都习惯了使用这种开源的分布式系统,还是想白嫖免费的,所以就有个大佬直接写了一个开源的,这就是git

我的理解:git是管理我们代码的一个工具,代码管理不是技术难题,而是一个管理的难题,git解决了团队开发效率问题以及开发版本的管理。技术方面主要是去中心化的分布式系统管理代码仓库。

分支的概念

分支名称

开局一张图,这张图乍一看全是英文,很烦看不懂,但是只要明白其逻辑就很简单的。想看原版请戳:成功的 Git 分支模型

  • 具有无限生命周期的主要分支masterdevelop分支
  • fearure是开发新功能使用的分支
  • release是预发布版本
  • 预发布版本测试后,打上Tag标签,一般是版本号,进行发布
  • 发布完成后,如果有bug,紧急迁出hotfixes进行热修复,完成后发布新版本master

img

模型与实际逻辑结构

在模型上这几个分支可能是由先后顺序,或者说继承顺序,但是在具体创建上都是逻辑上都是相同的,是处于同一层的分支,都是普通的分支,只是因为我们为了方便管理,提出了这个模型,给不同的分支起了不同的名字,赋予它们不同的职能。

具体流程

比如说我们现在要接手了一个10个亿的小项目:亿点点平台。功能开发阶段feature、预发布阶段release,发布阶段master

  • 首先我们先创建master,然后从master迁出develop,然后开发develop分支,开发了一段时间后,因为程序猿很多,需要根据功能开发:功能一:亿;功能二:点点。
  • 于是我们从develop迁出新的分支feature/yifeature/dianDian,分别进行开发,开发完成后,再合并到develop
  • 开发的功能差不多了,准备上线,develop迁出新的分支release/yiDianDian-1.0
  • 测试的差不多了,正式上线,将release/yiDianDian-1.0合并到master分支,并打上标签,一般是版本号,yiDianDian-1.0正式发布
  • 紧急情况,亿点点转账太慢,从master中迁出分支进行紧急修复,去掉sleep(3000),然后再合并大master中去,yiDianDian-1.1发布

idea中git的使用

本着能用图形化界面就不输命令行的优良习惯,我在idea实际实践了具体一下的操作。
Local是本地的分支,Remote是远程的分支,一般先从远程分支拉到本地,右上角的箭头是更新一下git远程的git分支名
在这里插入图片描述

迁出分支

develop迁出新分支,然后命名即可

在这里插入图片描述

切换分支

commit后切换即可

在这里插入图片描述
切换分支前若未commit,要么舍弃切换前的分支,要么只能合并到要切换的目标分支,要么放弃切换分支
在这里插入图片描述

feature分支命名

在实际实践中遇到了一个问题,创建了feature分支后,就不能创建feature/learn,所以一般不创建feature分支,直接创建具体的功能分支feature/learn

合并

例如将develop合并到master中去,我们先在develop分支push代码,然后切换到master分支(见图片的右下角),然后选中develop,将develop的代码合并到master分支中去。

提交前先三连

update(拉一下远程仓库到本地),commitpush。一般在右上角
在这里插入图片描述
怎么去这个右下角水印啊,好烦

本地回滚

将本地还未commit的代码删掉,回滚到分支的状态
在这里插入图片描述

远程分支回滚

回滚到分支的上几个版本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选soft:本地会回退到上一版本,但会保留以前提交的修改,呈未commit状态。再一次push会覆盖上一次提交,达到撤回push但本地未回滚的效果。
选Hard,Hard:文件将恢复为选定提交的状态。警告:任何本地更改都将丢失。
然后提交即可

如何打tag

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

git仓库

在这里插入图片描述
这张图是盗的菜鸟的,Git 教程 | 菜鸟教程 (runoob.com)

git命令

本着能用图形化界面就不输命令行的优良习惯,还是放一下吧,可能会有问题,因为确实不熟。

按开发阶段

  1. 迁出feature分支,并进行功能开发(开发阶段)

    git checkout devlop
    git checkout -b feature/test
    git push origin feature/test
    
  2. 功开发完成之后,合并featuredevelop(开发阶段)

    git merge --no-ff feature/test
    git push origin develop
    git branch -d feature/test
    git push --delete origin feature/test
    
  3. 功能开发完成后按照规划的版本号从develop创建release分支(预发布阶段)

    git checkout devlop
    git checkout -b release/1.0.0
    git push origin release/1.0.0
    
  4. 测试完成之后,发布release版本到master(发布阶段)

    git checkout master
    git merge --no-ff release/1.0.0
    git push
    git tag -a v1.0.0
    git push origin --tags
    
  5. 同步代码到develop,合并releasedevelop(发布阶段)

    git checkout develop
    git merge --no--ff release/1.0.0
    git push
    git branch -d release/1.0.0
    git push --delete origin release/1.0.0
    

常用命令

git clone:下载代码并创建本地仓库
git add:添加文件到git本地仓库版本
git commit:添加一个提交本地仓库
git push:推送代码到远程分支
git pull:拉取远程代码
git status:查看本地代码改动/状态
git branch:查看分支、或分支操作
git checkout:切换分支或创建分支

git安装

Git安装设置 - Git教程 (yiibai.com)

参考文章

成功的 Git 分支模型 看不懂的话直接全文翻译即可

Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)

Git教程 (yiibai.com)

Git 教程 | 菜鸟教程 (runoob.com)

Git教程 (yiibai.com)

Git 教程 | 菜鸟教程 (runoob.com)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

idea中git的简单使用及git分支 的相关文章

  • hg 或 git 中的两个完整目录/项目之间存在差异?

    我继承了一个最初存储在 CVS 中的项目以及所有修订 我做了相当多的编辑 并且我试图比较我在原始目录中所做的所有更改 关于添加的新文件与旧文件 hg git 是否有某种实用程序可以让我进行树差异或类似性质的操作 也就是说 新添加的文件 删除
  • 如何将普通的 Git 存储库转换为裸存储库?

    如何将 普通 Git 存储库转换为裸存储库 主要区别似乎是 在普通的 Git 存储库中 你有一个 git存储库内的文件夹 包含构成工作副本的所有相关数据和所有其他文件 在裸露的 Git 存储库中 没有工作副本和文件夹 我们称之为repo g
  • git Branch -d :致命 - 无法查找 HEAD 的提交对象

    假设我在一个裸存储库 远程 中 如果我尝试使用以下命令删除分支git branch d
  • gitlab 请求将分支 A 合并到开发中(落后 3 次提交)我应该担心吗?

    在 gitlab 中创建合并请求时 我经常收到一条消息 请求将分支 A 合并到开发中 x 提交落后 gitlab想告诉我什么 我应该担心还是需要修复某些东西 什么 一段时间后合并请求在项目中打开时 由于其他人合并了自己的更改 您尝试合并到的
  • Git:压缩 master 上提交的最简单方法[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 git 将最后 X 次提交压缩在一起 https stackoverflow com questions 5189560 how can i squash my last x commits
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

    这个问题在这里已经有答案了 当我尝试推送 github com 上的现有存储库时 当我输入命令时 网站提示我将其输入终端 我收到了以下致命错误消息 Not a git repository or any of the parent dire
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • 无法使用 git 推送或获取 [重复]

    这个问题在这里已经有答案了 我可以拉 但无法使用 git 版本 1 9 5 推送或获取 它突然开始给我以下错误 关于如何修复它有什么想法吗 git fetch fatal unable to access https email prote
  • git 如何查找分支源自的提交哈希

    假设我从主分支分支到主题分支 然后在主题分支上进行了一些提交 是否有命令告诉我主题分支源自的主分支上的提交哈希 理想情况下 我不必知道我做了多少次提交 试图避免 HEAD 5 我已经用谷歌搜索过 但似乎无法找到答案 谢谢 use git m
  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 清理远程 Git 分支

    我已经将 SVN 存储库移至 Git 可能由于多次克隆 我现在只剩下一堆看起来像这样的分支 BranchA origin BranchA remotes BranchA remotes origin BranchA remotes orig
  • git-svn 如何知道要提交到哪个分支?

    我的存储库是 SVN 我使用 git 进行所有开发 我们有一个标准布局 我用以下命令初始化了我的本地存储库git svn init s
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • SSL 适用于浏览器、wget 和curl,但不适用于 git

    我有一个网站 用于托管 redmine 和几个 git 存储库 这非常适合 http 但我无法使用 https 进行克隆 即 git clone http mysite com git test git 工作正常 但是 git clone
  • GitHub Pages (github.io) doxygen 生成的页面未找到 (404)

    我不明白为什么找不到 doxygen 生成的页面 404 它在Github存储库中的路径是https github com AubinMahe AubinMahe github io blob master doxygen html dd
  • Spring Cloud Config - 不允许使用 git-upload-pack

    我有一个在 docker 环境中运行的 spring boot 应用程序 它连接到 Git 存储库以获取应用程序的配置 我的问题是 当尝试获取 properties 文件时 应用程序有时会出错 这很奇怪 因为如果我更改用户和密码 同一个应用
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 如果您使用 CocoaPods,您的 .gitignore 中会包含什么内容?

    我从事 iOS 开发已经几个月了 刚刚了解到有前途的可可豆荚 http cocoapods org 用于依赖管理的库 我在个人项目上尝试过 添加了依赖项Kiwi https github com allending Kiwi到我的 Podf
  • 结帐时出现 Git 错误:“致命:引用不是树”

    当我决定弄清楚为什么我正在从事的项目如此重要时 这一切就开始了 我运行了以下脚本 git rev list objects all git cat file batch check objecttype objectname objects

随机推荐