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分支 的相关文章

  • git diff 在尖括号中显示 unicode 符号

    我有一个带有 unicode 符号 俄语文本 的文件 当我修复一些拼写错误时 我使用git diff color words 看看我所做的改变 如果是 unicode 西里尔文 符号 尖括号会造成一些混乱 如下所示 cat p1 cat p
  • IntelliJ:查看本地和 git 提交/分支之间所有已更改文件的差异

    使用 IntelliJ 的 diff 查看器是检查代码的一种非常好的方法 因为您可以使用 IntelliJ 代码编辑器的所有功能 重构 完成等 在本地版本中进行更改 不幸的是 我还没有弄清楚当你在 IntelliJ 中进行代码审查时如何做最
  • 如何从 android.googlesource.com 或 github.com 下载单个目录?

    我想下载 https android googlesource com platform frameworks base git master tools aapt https android googlesource com platfo
  • git 显示已添加到 gitignore 的文件中的更改?

    我已经将 log2 文件夹和 main js 文件添加到 gitignore 如屏幕截图所示 但即使执行后git rm cached r我仍然可以看到 git 正在检测 main js 和 log2 文件夹内文件的更改 怎么会 这些的常见问
  • Git:发送电子邮件而不提交

    我有一个项目 我做了更改 并想使用 git send email 功能将它们发送给另一个用户 我发现它可以通过发送补丁来工作 由git format patch每次提交 是否可以只发送diff的 我不想先提交 然后发送补丁 是否有gitfo
  • 丢失了我在 GIT 中的提交。你会不小心删除提交吗?

    我正在使用 git gui 但看不到我的分支 我知道我今天检查了一些东西 在完成提交并使用分支查看器验证后 我更改为较早的分支 我对之前的分支进行了更改 然后想返回到当前的分支 但我再也看不到它了 任何帮助都会很棒 回答你的问题 在大多数情
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • 致命:.git/info/refs 无效:这是一个 git 存储库吗?

    我有一个托管在 Assembla 上的 Git 存储库 我正在尝试执行以下操作 git push u origin master 我一遍又一遍地收到以下错误 fatal https url repo name git info refs n
  • 使用终端时 Git 推送在总计后卡住了?

    我尝试将一些文件推送到Github 总大小只有22 2M 我不知道为什么它在总行之后卡住了 我读过推送到 Github 时 Git 推送挂起 https stackoverflow com questions 16906161 git pu
  • Netbeans 和 Git,.obj 文件被忽略

    我正在开发一个涉及 obj 文件的小型 git 项目 当我查看 项目选项卡 时 我发现它们被忽略了 但如果我查看我的 gitignore 我无法理解为什么 DepthPeeling nbproject private DepthPeelin
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • 如何在 macOS 上将 Git 升级到最新版本?

    我刚刚购买了一台装有 OS X Lion 的新 Mac 我在终端中检查了默认安装的 git 版本 我得到了答案 git version gt git version 1 7 5 4 我想将 git 升级到最新版本 1 7 8 3 因此我下载
  • 如何克隆特定的 Git 标签

    From git clone 1 手册页 http git scm com docs git clone branch还可以在结果存储库中的该提交处获取标签并分离 HEAD 我试过 git clone branch
  • Git 将一个分支合并到所有其他分支中

    我知道这个问题已经在这里被问过 https stackoverflow com questions 2329716 merging changes from master into all branches using git https
  • Git 2.2.x 无缘无故更新旧包文件的时间戳

    Git 2 2 0 和 2 2 1 似乎修改了旧的时间戳 git objects pack pack pack偶尔会无缘无故地文件 它只是改变时间戳 内容是相同的 调试这一点很困难 因为它似乎很少进行更改 我在 2 2 0 之前的任何 Gi
  • Android 存储库初始化失败

    我想我非常仔细地遵循该网站的说明 http source android com source downloading html http source android com source downloading html 但是当我尝试这
  • `git push` -- 没有输出,什么也没有发生

    touch test git add test git commit m test git push u origin master 这奏效了 该文件已上传到存储库 rm test cp R website website git rm t
  • 如何减少 Bitbucket 上的 git repo 大小?

    我的问题摘要 在我向两个现有文件添加了几百个字节后 我在 Bitbucket 上的一个私人存储库的大小突然增加了一倍多 该存储库现在超过 2GB 这导致 Bitbucket 将其置于只读模式 因为它处于只读模式 所以我无法推送会减少存储库大
  • 部分共享git仓库

    我是 git 新手 我想知道是否支持以下场景 如果支持的话如何支持 即用于设置和更新的 git 命令 可以从三个不同的地方获取存储库 本地 镜像 和 github mirror 完全镜像 local github 镜像 local 但 受版

随机推荐