如果我推送到已删除的分支会发生什么?

2024-01-07

我有一个 git 分支。被gitlab合并删除了。现在,发现了一个错误,我想继续在这个分支上工作。我重命名了它,但它仍然跟踪已删除的分支(它不知道 gitlab 删除了该分支)。 现在我很好奇,在这种情况下我该怎么办?

  • 如果我按原样推进会发生什么?
  • 我怎样才能将分支与原点分离?
  • 也许创建一个新分支更简单?

在回答您的具体问题之前,我想指出您的问题措辞方式的一个小细节:

我有一个 git 分支。被合并了并被 GitLab 删除。现在,发现一个错误,并且我想继续在这个分支工作.

从概念上讲,我认为这样说更有意义:

现在,发现一个错误,并且我想修复它.

由于该错误是已经合并了进入主代码库后,您开发该代码的分支不再相关,这就是为什么典型的操作是在合并后将其删除。假设您想修复一年前引入的错误;您不会尝试找到一年前的分支并从那里开始修复,而是从最新的分支创建一个分支main(或者无论你的默认分支被称为什么),然后去修复错误。从概念上讲,这也是您应该针对这种情况执行的操作。话虽这么说,如果您创建的新分支碰巧与您以前使用的分支同名,通常是可以的。无论分支名称最后一次使用是在一年前还是几分钟前,情况都是如此。如果您确实重复使用相同的命名分支,您可能希望将其重置为最新版本,例如main第一的。有多种方法可以做到这一点:

# Get the latest code before any of these
git fetch

# Delete the branch and re-create it:
git switch any-other-branch-name
git branch -d my-fav-branch-name-i-want-to-reuse # delete it
git switch -c my-fav-branch-name-i-want-to-reuse origin/main --no-track # create it again from main

# OR faster

# Just force switch to the same branch name:
git switch -C my-fav-branch-name-i-want-to-reuse origin/main --no-track

# OR faster if already checked out

# Just reset if branch is already checked out
git reset origin/main

这里的要点是分支名称并不神圣,如果您愿意,您可以重复使用分支,或使用其他名称。如果我正在修复错误,我可能更倾向于将我的分支命名为user/ttt/fix-blah-blah-blah.

因此,根据这些信息,现在让我们回答您的问题。您的设置场景是远程分支已被合并和删除,并且您已重命名本地分支,但它仍在跟踪旧的上游分支名称。

如果我按原样推进会发生什么?

If you git push,它只会在远程重新创建旧的分支名称。如果您没有重命名分支,假设您打算重复使用相同的分支名称,那么这可能没问题,但由于您重命名了分支,所以这是不可取的。将上游设置为新名称会更容易混淆。

我怎样才能将分支与原点分离?

git branch --unset-upstream

也许创建一个新分支更简单?

请注意,在我上面使用的示例命令中,当从switch命令,我使用了--no-track防止其跟踪的选项origin/main。我不会说创建一个新分支“更简单”,但它使您能够删除旧分支,这很好,因为远程跟踪信息也消失了。在我每天工作的存储库中,我通常在任何时间都有 5-50 个本地分支,所以我喜欢以这样的方式命名我的分支,这样我只需通过阅读就可以很确定它们上面有哪些未合并的提交分支名称。最终,是否再次使用同一个分支,实际上取决于个人喜好。在我使用 Git Flow 的常规存储库之一中,我总是创建一个名为user/ttt/merge-master-into-develop并在每次执行合并时重新使用相同的名称。但对于常规工作,我的分支名称通常是唯一的并且能够描述我正在执行的任务。

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

如果我推送到已删除的分支会发生什么? 的相关文章

  • DVCS命令的统一

    当处理多个 开源 项目时 多个版本控制系统开始出现问题 虽然它们共享共同的操作 但我经常在输入时犯错误hg add反而git add 我记得前段时间看到过一个项目 通过提供基本命令以统一的方式访问不同的源代码控制软件提交 ci add等在外
  • refname 不明确且拉取失败

    我运行了以下命令 因为我想将生产分支移回而不必先签出 git branch f production HEAD 1 现在 当我检查生产时 我收到以下警告 warning refname production is ambiguous 然后我
  • SSH 到 Openshift 服务器失败

    我正在 openshift 服务器上使用 jboss catridge 我希望与其他人共享此实例并添加其他用户的公钥 id rsa pub 当其他人尝试访问该实例时 他会收到以下错误 我在他的实例中尝试了同样的方法 但看到了同样的错误 与
  • git - 更新 fork 的 master 并将我的分支重新建立到它之上?

    我分叉了一个 github 项目 然后将其克隆到本地 然后我在新分支中做了一些更改my github the project repo 然后我添加并提交了更改 并推送到我的 github 存储库并提交了拉取请求 所有者已收到我的请求 并希望
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • git diff - 只显示哪些目录发生了变化

    有没有办法只列出已更改的目录 如果我在 git root 的话 project 我更改的文件是 project subtool file1 project subtool file2 project subtool3 file1 我只是想
  • git pull,忽略深度,如何不拉取整个历史记录?

    我们有一个巨大的多 GB git 存储库 主要是二进制对象 克隆需要几天时间 实际的主分支 没有历史记录 只有大约 20MB 所以我想 深度为 1 的 git 克隆就是解决办法 然而 现在我需要将某人的更新拉到主服务器 我们没有分支 当我拉
  • 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 但看不到我的分支 我知道我今天检查了一些东西 在完成提交并使用分支查看器验证后 我更改为较早的分支 我对之前的分支进行了更改 然后想返回到当前的分支 但我再也看不到它了 任何帮助都会很棒 回答你的问题 在大多数情
  • git 匹配多个单词的标签

    我们可以得到最后一个 git 标签 它以一个单词 例如 TEST 开头 如下所示 git describe tag dirty match TEST 我想知道如何获得最后一个以 word1 开头的标签orword2 例如测试OR跑步 我尝试
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 默认情况下 git merge -Xignore-space-change

    我该如何设置该选项ignore space change对于所有合并使用git config 我也许可以使用别名merge 但因为我希望该设置应用于git stash pop git stash apply git pull and git
  • Git - 创建拉取请求而不分叉

    使用 git 已经有一段时间了 关于 git pull request 有很多教程和解释 其动机是什么等等 我遇到两种情况 1 分叉 git 仓库 我查看了一些公共 git 存储库并决定我想要做出贡献 所以我 通过以下方式创建重复的存储库F
  • 我可以直接从我的谷歌云端硬盘在线推送/拉取吗?

    有一些方法可以通过谷歌驱动器同步 Windows 应用程序将我的本地 git 存储库同步到我的谷歌驱动器 但我想知道我是否可以完全绕过它的需要 Fro eg git remote add origin https drive google
  • 自定义 SSH 端口上的 Git

    我的 VPS 提供商建议我将 SSH 端口保留为他们默认分配的自定义端口号 不是 22 问题是 虽然我知道我可以在创建远程配置时提供端口号 但在进行 Git 克隆时似乎无法提供相同的操作 我在用gitolite https wiki arc
  • git 排除与忽略

    I use Tower http www git tower com 用于在 Mac 中使用 Git Tower 中的设置具有创建 gitignore 的 忽略 部分 但它还有另一个名为 排除 的部分 似乎可以将排除与 git ls fil
  • git reflog 和 log 有什么区别?

    手册页说 log 显示提交日志 reflog 管理 reflog 信息 reflog 信息到底是什么 它有哪些日志没有的信息 日志看起来更详细 git log显示当前的 HEAD 及其祖先 也就是说 它打印提交 HEAD 指向的提交 然后打
  • Git 更改丢失 - 为什么?

    我们的开发团队正在使用 git 最近我们至少两次丢失了文件更改 我们正在使用私人 Github 存储库 在当前情况下 我们可以返回 Github 上的日志并查看我对文件所做的一些更新 后来 另一位团队成员更改了文件的不同部分 它似乎破坏了我

随机推荐

  • 如何为模块内的类方法添加别名?

    我正在使用 Ruby v1 9 2 和 Ruby on Rails v3 2 2 gem 我有以下模块 module MyModule extend ActiveSupport Concern included do def self my
  • Android CardView 显示卡片周围的边框

    Android Cardview 在卡片周围显示不必要的边框 我尝试过不同的方法 但无法将其删除 当我为卡片提供自定义背景颜色时会发生这种情况 当我删除 cardBackgroundColor 并使用默认值时 那么不必要的边框就不可见了 我
  • gacutil.exe 的两个位置

    我正在 Windows 2008 R2 Server 64 位 上进行开发 我正在学习如何使用 gacutil exe 我找到了该文件的两个副本 C Program Files Microsoft SDKs Windows v6 0A Bi
  • 如何在java中创建临时文件而不在文件名后附加随机数?

    我需要创建一个临时文件 所以我尝试了以下方法 String TempFiles c1234c10 c1234c11 c1234c12 c1234c13 for int i 0 i lt 3 i try String tempFile Tem
  • 如何将现有 Java 密钥库 (.jks) 文件导入到 Java 安装中?

    所以 我在 LDAP 方面遇到了麻烦 我有一个集成测试用例 希望能够成功 但它目前遇到了 SSL 握手的 LDAPS 安全问题 我能够使用 Apache Directory Studio 连接到 LDAPS 并且它已将密钥库下载到文件 pe
  • endpoints.ServiceException 子类返回 400 状态代码而不是 409

    在云端点中文档 https developers google com appengine docs python endpoints exceptions对于异常处理 建议子类化endpoints ServiceException类提供自
  • 将 Boost 库添加到 OS X Eclipse 中的 C++ 项目

    我一直在尝试使用 eclipse 使用 boost 文件系统库来设置 C 项目 我跟着these http www technoboria com 2009 07 simple guide to installing boost on ma
  • ListFragment onItemClickListener 不起作用

    我正在使用选项卡式布局 带有滑动 这里我有 3 个由SectionsPagerAdapter 控制的选项卡 每个选项卡都是一个 ListFragment 现在我想在单击列表中的一项时触发一个事件 我想要每个选项卡都有一个监听器 现在是代码
  • 使用 fgets 从文件中读取

    我正在读取格式的文件 1 32 43 23 32 43 123 43 54 243 123 2222 2 这是我的代码片段 string 100 while feof fp fgets string 100 fp 现在 当我将每个字符串放入
  • Django 使用 kwargs 进行反向操作

    比如说 在我的注册类的 post 方法中 如果用户已经注册 我想将用户重定向到登录页面 这很简单 class Register View def post self request Some code to check if the ema
  • XTS 的日期有不同的来源。使用 R 计算 beta

    我对 R 有点陌生 我想我的错误对于有经验的人来说是微不足道的 我正在尝试编写一个 R 程序来计算许多股票的贝塔值 股票代码读取自Input csv 数据是从yahoo下载的 然后 代码循环执行每只股票的 beta 计算 并输出总结回归的
  • UITextView 带有“完成”按钮*和*“返回”键?

    我在 iPhone 应用程序中使用 UITextView 进行多行文本输入 并且已将 返回 键设置为显示 完成 我还设置了返回键来禁用第一响应者状态 以便点击 完成 实际上退出 UITextView 但是 我还希望用户能够在 UITextV
  • 如何编写在框中绘制文本/字符串的测试用例?

    我正在矩形框架中绘制字符串 绳子拉得很完美 现在我需要使用sentesting 套件编写测试用例 我不知道应该从哪里开始 为了寻求帮助 我还看到了iPhone 示例计算器应用程序 http developer apple com IPhon
  • 未找到视图或其主视图,或者没有视图引擎支持搜索的位置

    错误如下 未找到视图 LoginRegister 或其主视图 或者没有视图引擎支持搜索的位置 搜索了以下位置 视图 MyAccount LoginRegister aspx 视图 MyAccount LoginRegister ascx 视
  • 当在 gnu 屏幕中使用 vim 或 less 时,退出 vim 或 less 会留下挥之不去的印记

    在我的新 Ubuntu 系统上 我启动一个屏幕会话并在 vim 中编辑文件或在 less 中查看它 退出后 屏幕不会自行重绘 而只是向上滚动以在我刚刚在 vim 或更少中查看的所有内容下显示命令行 我怎样才能改变这个 以便退出 vim 会让
  • jQuery:如何在两个闭合的 html 标签之间选择文本

    我正在尝试使用 jQuery 将介绍 帮助文本包装在 html 文档中 它不在任何标签内 而是在两个闭合的 html 标签之间 例如 请参阅随附的代码片段 第二个结束标签也可以是除 p var txtHelp jQuery b page t
  • Django 缓存错误..即使禁用缓存

    我有一个 Django 网站 其中出现了一个奇怪的错误 在网站上 他们可以添加 出版物 这基本上与不同名称的博客文章相同 当他们修改现有帖子时 事情会变得很奇怪 他们首先在管理员中修改它 当他们访问网站时 更改不可见 就像旧版本被缓存一样
  • 是否可以隐藏系统栏

    我创建了一个启动器 以便在内部应用程序中使用它 出于某些安全原因 我想隐藏系统栏 对参数的访问和对已安装应用程序的访问的排序 但我不知道该怎么做 将使用的平板电脑未root 你能帮我吗 您无法隐藏它 但可以禁用它 但主页除外 为此 您可以将
  • R 中的网页抓取,“...当前工作目录中不存在”错误

    我正在尝试使用 XML2 包从 ESPN com 中抓取一些表格 举例来说 我想将第 7 周的梦幻四分卫排名抓取到 R 中 其 URL 为 http www espn com fantasy football story page 16ra
  • 如果我推送到已删除的分支会发生什么?

    我有一个 git 分支 被gitlab合并删除了 现在 发现了一个错误 我想继续在这个分支上工作 我重命名了它 但它仍然跟踪已删除的分支 它不知道 gitlab 删除了该分支 现在我很好奇 在这种情况下我该怎么办 如果我按原样推进会发生什么