整理或删除 git 历史记录以进行发布? [关闭]

2023-12-02

我将公开发布一个项目,希望能找到贡献者。我的项目是另一个活跃且资源丰富的项目(Django 项目模板)的本地克隆。我没有对代码进行任何深入的更改,尽管它现在是一个不同的项目。

我当前的 git 历史记录一团糟,而且没有多大帮助。我会在公开发布之前以某种方式清理它,当然,也会明确最初的分叉项目是什么。由于我认为我对项目所做的修改(主要是自定义)没有什么特别或神秘之处,因此我热衷于按照此压缩所有提交堆栈溢出帖子。我想知道这是否是一种不好的做法,因为如果我删除索引搜索历史记录,可能会变得更难做出贡献。我打算通过良好的评论、经过深思熟虑的自述文件等来减少此类问题。

我看到并希望避免的替代方案是艰苦的增量rebase squash使命。


我明白你有

  1. 从 GitHub 上的一个项目分叉,
  2. 克隆你的叉子,
  3. 在该本地存储库中进行了一些提交。

如果你已经把叉子推到了叉子上

由于您的(不整洁的)历史记录现已公开,因此有些人可能已经分叉/克隆了它以在您的工作基础上进行构建。通过重写你的历史,然后强行推到你的分叉上,你冒着惹怒那些人的风险......大事!那是不好的做法.

因此,在继续之前,您至少应该确保您的项目从未被分叉或克隆。幸运的是,GitHub 会跟踪这些信息。在右侧导航栏中,点击Graphs.

enter image description here

The Network选项卡将显示有多少人分叉了您的项目。

enter image description here

如果您是其中唯一列出的人,那很好。然后前往Traffic选项卡,查看您的项目被克隆了多少次。

enter image description here

如果您的项目从未被克隆,那么仍然有时间强制将您整理的历史记录推送到您的分叉上。

一个警告:当然,总是存在有人在你强制推送之前的关键时刻分叉/克隆你旧的、不整洁的历史记录的风险。小心行事。

如果你有not却把任何东西都推到了你的叉子上

在这种情况下,重写你的历史是完全安全的,并且被认为是好的做法.

您需要决定的只是您希望在新的、整洁的历史中保留的关卡细节。 这实际上取决于您,但是,当您重写历史时,请尝试将自己置于浏览该历史的人的位置,并尝试理解您的改进/更改。

例如,如果您对原始项目所做的更改很大,那么将所有提交压缩为一个大型提交可能不是最好的主意...通过以合乎逻辑的方式将更改分散到多个提交中,使您的历史记录更加平淡。

这里有一个相关段落Pro Git 书的内容:

[...]尝试使每个提交成为逻辑上独立的变更集。如果可以的话,尽量让你的更改易于理解——不要用整个周末的时间来编写五个不同的问题,然后在周一将它们全部作为一个大规模提交提交。即使您不在周末提交,也可以在周一使用临时区域将您的工作分成每个问题至少一个提交,并且每个提交都有一条有用的消息。如果某些更改修改了同一个文件,请尝试使用 git add--patch部分暂存文件(第 6 章详细介绍)。无论您进行一次提交还是五次提交,只要在某个时刻添加所有更改,分支顶端的项目快照都是相同的,因此当其他开发人员必须审查您的更改时,请尽量让他们更轻松。如果稍后需要,此方法还可以更轻松地提取或恢复其中一个变更集。

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

整理或删除 git 历史记录以进行发布? [关闭] 的相关文章

  • 如何仅隐藏一些未提交的更改?

    我正在对 Git 存储库进行重大更改 并意识到某些更改需要向后移植到错误修复分支 我不想签入我的所有更改master因为它们还没有经过充分的测试和准备 但我确实想提取其中一些更改并将它们提交到错误修复分支 然后按原样返回到 master 我
  • Git合并策略:空格使默认显示不冲突并带来意想不到的结果

    经过多次试验 我得到了这个简单的测试用例场景 a gt b gt c master gt d gt b gt e branch Where b 是樱桃精选b e is a merge from master b 之后完成c and c对相同
  • 如何使用 Groovy 获取自上次成功构建以来 Jenkins 的提交信息?

    如何编写自定义 groovy 脚本以轻松操作自上次成功构建以来所有提交的数据 在 gradle maven 步骤之后添加新的构建步骤 gt 执行系统 groovy 脚本 适配代码 import com tikal jenkins plugi
  • git 忽略行结尾

    我知道已经有人问过类似的问题 但我仍然无法让它发挥作用 我的项目在使用不同操作系统的人之间共享 而我使用的是 OSX 另外 并不是每个人都使用 git 有时我最终不得不提交其他人的更改 有时 git 会突然说有待处理的更改 查看文件 它们看
  • git:检查标签,修改某些内容,然后再次标记它

    我觉得我应该知道这一点 但我很困惑 我在 github 上分叉了一个存储库 我需要的是签出一个标签 称为 v1 0 5 修改文件上的语句 使用名为 1 0 5 的新标签 不带 v 重新标记该状态 然后执行对 master 进行同样的更改 让
  • 无法使用 Git Bash 对 Visual Studio Team Services 进行身份验证

    由于身份验证失败 我无法对 Visual Studio Team Services VSTS 上的远程存储库运行任何命令 我可以通过 Visual Studio 进行拉取等操作 但只能通过 Visual Studio 不通过 Git Bas
  • Git 将开发分支与生产版本的主分支合并

    我正在使用 Git 进行代码版本控制 我有一个开发分支 我正在其中进行所有肮脏的开发 每次我向世界发布生产版本时 我都想将其放在我的 master 分支下 问题是 每当我合并开发和 master 时 master 都会收到所有开发历史记录
  • 禁止 Gerrit 推送到 refs/for/master

    我已经更新了所有项目昨天获得访问权限 人们说他们今天早上无法将更改推送到存储库 当我恢复访问权限后 他们仍然无法将更改推送到存储库 只能clone工作正常 在将更改推送到远程存储库时 它表示 remote rejected HEAD gt
  • 在 Windows 上从源代码构建 PhantomJS-2

    我正在尝试基于这些在 Windows 8 1 x64 上从源代码构建 PhantomJS 2 的开发版本指示 https github com ariya phantomjs wiki PhantomJS 2 但是我收到以下错误 mingw
  • 使用 git filter-branch 然后 git push --force 清除大文件后,远程(Gitlab)上的 Git 存储库大小仍然很大

    我已按照 Gitlab 文档中有关 使用 Git 减少存储库大小 的说明进行操作 通过从历史记录中清除大文件 https docs gitlab com ee user project repository reducing the rep
  • 永久删除 git 提交历史记录

    我需要永久且完全删除 git 存储库的提交历史记录并继续使用文件的当前版本 旧版本 提交不得以任何方式访问 我尝试创建一个新的主分支 删除所有其他分支 但是当我在 git bash 中尝试 git show xxxx 时 旧的提交继续显示
  • github Diff 截断错误

    在 github 中发出拉取请求并审查更改时 我们收到了 Diff Truncated 错误 如下所示 任何人都可以帮助解决这个问题 拉取请求可能会触发以下提到的限制之一GitHub 支持 https stackoverflow com a
  • git 工作目录中的更改拒绝恢复

    我的 git 工作目录中有五个文件git status显示为已修改 当我git diff他们 整个文件显示为已更改 我有core autocrlf true但似乎没有效果 当我试图从同事那里获取更改时 真正的问题出现了 修改 的文件之一会被
  • 如何发布/销售/推广半商业/开源项目? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经开发了一个 PHP 框架 总共花了大约 3 周的时间 但它已经准备好发布了 如果我选择这样做的话 在目前的经济形势下 我不能仅仅接受
  • 无法从另一台计算机访问 git 分支

    基本上我看不到另一台计算机上的分支 我跑 git branch a 在家用电脑上我得到 C learn ror sample app filling in layout gt git branch a filling in layout m
  • 运行 flutter doctor 吐出错误:标准错误:致命:坏对象 HEAD

    我已经从官方网站安装了 Flutter 和 Android Studio 我是 Git GitHub 移动开发和 Android 开发的新手 我试图在命令提示符 Windows 10 中运行 flutter doctor 命令 但是 它会以
  • Azure git 部署 - 第二个程序集中缺少引用

    我正在尝试将 Bitbucket 部署设置到 Azure 网站 我成功链接了 Bitbucket 和 Azure 但是当我推送到 Bitbucket 时 我在 Azure 站点上收到以下错误 如果我单击 查看日志 它会显示以下编译错误 D
  • GitHub - 指定时间的存储库状态

    我是使用 git 版本控制工具的初学者 我想在指定时间 例如 2013 年 10 月 5 日 下载存储库状态 文件 我怎样才能做到这一点 截至 2019 年 5 月 不确定何时引入 您可以简单地按以下格式添加日期 HEAD 2019 04
  • 如何与其他用户共享 bitbucket 存储库?

    我正在使用 Bit 存储桶 并且我想与一位朋友分享我的存储库 我用的是免费的个人账户 似乎有一个选项可以在位桶中创建团队 但它说它将把我的帐户从个人帐户转换为团队帐户 我不要那个 我如何授予其他用户访问此存储库的权限 有一个共享链接选项 如
  • git 从存储中删除文件

    我有一个藏匿处 里面有一堆文件 但由于文件冲突 我无法应用我的存储 我已经在我的存储中发现了有问题的文件 我想将其删除 如何从存储中删除单个文件而不破坏整个文件 存储是一次提交 或者实际上是两次甚至有时是三次提交 并且您无法更改提交 那么

随机推荐

  • 为什么渲染后会调用componentWillMount?

    我正在使用 React 并试图了解其生命周期 我正在做一个componentWillMount方法 以便得到props我需要在渲染发生之前 我需要知道如何在视图加载时更新状态 我想做的就是GET请求以获得赌场游戏的经销商列表 基本上 我缺少
  • 如何在 Windows 系统上安装 gdcm python 包装?

    读完这篇文章后 https github com neurosnap mudicom blob master docs install rst 从这里下载 https github com malaterre GDCM releases安装
  • 带有“prompt”的“while”循环永远不会显示任何“console.log”

    我只是想检查我的控制台是否已连接到我的代码 以前它对同一个程序也是如此 但现在它甚至没有加载仅包含标题的基本 HTML 页面 并且在控制台中没有显示任何内容 为什么它会这样 var todos whats up dude var input
  • 查找两列中的所有重复值并生成一个不同的行

    我有一个 df 有两列 IP 地址和用户 ID 我试图确定用户 ID 和 IP 地址的不同值 我知道如何获取每个 IP 的不同用户列表 反之亦然 但不知道我是否希望将它们粉碎成一行以及如何做到这一点 获得我正在寻找的结果的推荐方法是什么 示
  • 检测 Spring 3/Spring Security 2.0.5 中的会话超时

    我有一个在 Spring 3 和 SpringSecurity 2 0 5 下运行的 Web 应用程序 为了向用户展示自上次访问以来对站点的更改 我尝试注册其会话被破坏的时间 因此我注册了org springframework contex
  • 如何捕获 .NET 应用程序中的所有异常/崩溃[重复]

    这个问题在这里已经有答案了 可能的重复 NET 实现 捕获所有异常处理程序 的最佳方法是什么 我有一个 NET 控制台应用程序崩溃并向用户显示一条消息 我所有的代码都在try code catch Exception e code
  • JQuery 自动完成结果格式?

    我有一个由空格分隔的值字符串 我将其返回到 Jquery 调用 但它不会将单词分隔成行 数据应该以字符串 列表还是其他形式返回 默认情况下 它希望结果由换行符分隔 如果您提供由空格分隔的值列表 您将需要提供一个解析函数 该函数将获取返回的数
  • 从继承中覆盖 FOSUserBundle 的模板

    正如标题所示 我正在尝试用我自己的模板自定义 FOSUserBundle 的模板 但这根本不起作用 我尝试了我发现的每篇文章中所述的所有内容 校对了所有内容 清除了缓存数千次 但仍然无法正常工作 与 getParent 捆绑类 应该覆盖 f
  • Webpack + Firebase:禁用 Firebase 解析

    我正在开发一个使用 Webpack 捆绑模块的 Web 应用程序 无论出于何种原因 将 Firebase 引入应用程序都会导致 Webpack 抛出错误 当 Webpack 尝试加载 Firebase 模块时 会发生此错误 如何从 Webp
  • 对并行数组进行排序

    Java 初学者使用旧教科书和首先 Java书籍来解决一些问题 我有三个并行的数组 我需要能够根据用户选择按标题 作者或页数进行排序 我可以使用排序Arrays sort 但我对如何对其他两个数组进行排序以使其与新排序的数组相对应感到困惑
  • Windows 脚本:VBScript、DOS、JS、Python、

    假设您主要是一名 C 语法程序员和 Linux 系统管理员 您的任务是在 Windows 上创建一些简单的自动化任务 监视备份文件 进程监视 您更喜欢用哪种语言编写脚本 那里有大量的 VBS 脚本 使用 VB 语法 但我更喜欢与 C 相关的
  • 切换按钮和切换可见性

    我正在使用这个 jQuery 来隐藏 DIV slider click function help slideToggle wrapper animate opacity 1 0 200 slideToggle 200 function s
  • PHP 条件语句,需要括号吗?

    我正在浏览一个论坛 有人询问他们在网上找到的一个 PHP 文件 代码中有几个这样的地方 if REMOTE ADDR ip no ip else ip getHostByAddr REMOTE ADDR 我一直认为如果条件为真 则需要括号来
  • C# float.ToString 舍入值

    也许我错过了一些东西 但是float ToString 方法对数字进行四舍五入 这让我很头痛 看看下面的小代码 当输入 12345678 作为输入时 调试器中的浮点数是正确的 但输出ToString方法是 12345680 我尝试过的任何格
  • Android Google 地图阿拉伯语标记标题显示空白

    我正在使用适用于 Android 的 Google Maps API v2 并且我已经使用过Marker类向地图片段添加标记 如下所示 map addMarker new MarkerOptions position new LatLng
  • AngularJS 搜索更改事件

    我需要一个像这样的活动 routeChangeSuccess但对于 location search 变量 我正在调用 location search newview 并且需要一种方法来知道它何时发生变化 Thanks 你应该使用 scope
  • 为什么变量名中不允许使用特殊字符?

    为什么编程语言的变量名中不允许使用特殊字符 下划线除外 是否有与计算机体系结构或组织相关的原因 大多数语言都有悠久的历史 使用 ASCII 或 EBCDIC 字符集 这些语言往往具有简单的标识符描述 例如 以 A Z 开头 后跟 A Z 0
  • 返回 Future[(Int,Int)] 而不是 (Future[Int],Future[Int])

    我有以下未来 def f1 Future 1 def f2 Future 2 我需要以下代码来返回Future Int Int val future function that returns a future future flatMap
  • 将 Object.entries 减少为泛型类型

    我在 TypeScript 中有以下函数 它的作用是将枚举转换为数组 function toKeyValList e any return Object entries e reduce acc any val any gt acc pus
  • 整理或删除 git 历史记录以进行发布? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我将公开发布一个项目 希望能找到贡献者 我的项目是另一个活跃且资源丰富的项目 Django 项目模板 的本地克隆 我没有对代码进行任何深入的更改 尽管它现在是一个不同的项目 我当前的 gi