问题标签 [rebase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
515 浏览

git - 清理 git rebase(应该有 git pull'd)

我正在从一个分支进行 git rebase,在那里我进行了 3 次更改,但重新设置了 10 次,我真的希望我使用过 git pull。我想我还在学习 git。更改已发布...

我宁愿做一个 git pull,所以只有 3 个签入被添加到上分支,而不是重新设置上分支中的十几个提交。

有没有办法清理这个?或者只是继续前进。Github 不会让我退出提交,这可能是有充分理由的。

0 投票
3 回答
725 浏览

.net - 如何防止 NGEN 对我的代码进行变基(对性能产生负面影响)?

我只是想加快基于 .NET 的客户端应用程序的速度,并正在考虑对代码进行 NGEN 处理。

Jeffery Richter写了这个关于 ngening 代码的警告:

• 较差的加载时间性能(变基)。当 Windows 加载一个 NGend 文件时,它会检查文件是否在其首选基地址加载。如果文件无法在其首选基地址加载,则 Windows 会重新定位文件,修复所有内存地址引用。这是非常耗时的,因为 Windows 必须将整个文件加载到内存中并修改文件中的各个字节。有关变基的更多信息,请参阅我的书:Programming Applications for Microsoft Windows, 4th Edition (Microsoft Press)。

由于我对这个主题了解不多,在我开始更改项目中的设置之前我应该​​知道什么,我应该更改哪些设置?

0 投票
3 回答
761 浏览

git - 使用 github 在 git 上批量更改电子邮件地址

我最近克隆了一个 hg repo 到 git,所以我可以在 github 上发布它。很多电子邮件地址都是错误的,我想在有人分叉这个项目之前使用 git rebase 来更改它们。如果我改变它们,我该如何将新的、完全重新定位的 repo 推送到 github?我可以重新设置基准然后 git push吗?我必须先删除项目吗?

0 投票
1 回答
5788 浏览

git - git:重写历史:重新排序和合并提交

现在的情况:

我想清理那个历史记录(A1 到 B3),尤其是。因为我还没有把它推到任何地方,因为我想准备一个只有那些 B* 的补丁。

我想要的是:

我可能根本不会推动这个(或者如果我愿意,只有总和 B*,我必须完全删除 A* 提交),当我进一步处理这个问题时,我可能会得到额外的此类提交,即像这样:

我想像上面一样再次重写它。

我不只是想知道任何方法来做到这一点(因为我能够以一种有点 hacky 的方式得到某事),我是 esp。在这里要求正确/最好/最干净/最简单的方法来做到这一点。


我在做什么,尤其是。是:我在官方的 xorg-xserver-1.7 分支上工作,想准备一个补丁(B*)。因为我希望能够将我自己编译的 xserver 替换为系统一个以进行简单的测试,所以我应用了一堆 Debian/Ubuntu 补丁 (A*)。但是,当我要在某处发布该补丁时,我想排除这些补丁。

0 投票
1 回答
634 浏览

git - git中'git rebase'的工作机制

这是来自A Visual Git Reference的捕获,它解释了 rebase 的想法。

http://a.imageshack.us/img339/4264/screenshot20100903at102.png

我的理解如下。

  • git 正在跟踪更改,因此 169a6 和 2c33a 具有(跟踪)来自提交 a47c3 的更改。
  • 变基意味着将更改应用于 da985。结果,f7e63 具有(跟踪)从 b325c 到 e57cf 的所有更改。

问题。

  • 我的理解正确吗?
  • 如果是这样,我们如何确定 169a6 和 2c33a 中的更改可以(安全地)在提交 da985 时应用?
  • 如果没有,你能解释一下变基的作用吗?
0 投票
1 回答
10756 浏览

git - 为什么'git bisect'分支不知道?

我试图找到自过去一天在一个名为feature-x的长寿分支(将在很久以后发布)上提交以来出现的错误的来源。

虽然有一个错误。我发现我的脚本中没有预料到的行为可能已经在迄今为止的任何提交中引入,特别是因为 master 的特性在 feature-x 中被大量使用,但在 Master 本身中则较少使用。

为了测试这种行为,我必须运行我的脚本dependent.pl。但是当 bisect 跳转到代码的一半时,我的脚本在 Master 上不存在,因此无法测试。

我相信这是因为 bisect 将您拉入无头状态,但在这种情况下,我真的想处于另一个历史/变更集的上下文中,而不是漂浮在以太中。

在任何人跳到你做错了蜂鸣器之前,我们的团队喜欢在这些情况下合并分支,因为这个比喻适用于这种情况,而不是变基。

我将通过创建一个示例 repo 来演示这个:

所以现在你得到一个看起来像这样的 repo:

所以我运行命令,git bisect start feature-x dev-1.0期望我能够找到在dependent.pl 中破坏我的代码的原因,我最终提交'sub f { return 2 }' 没有我从feature-x 更改的历史(即,如果我运行ls,我所看到的只是 main.pl 和dependent.pl 丢失)。

这使我处于无法测试的状态。我不知道当前的提交是否破坏了我的工作,也不能说 master 上的提交破坏了它,所以我不能说这个提交是好是坏。

我如何测试是什么破坏了我当前的分支?

0 投票
2 回答
116 浏览

git - 变基分支,它有自己的分支

我不能让 git push origin B. 我有这样的情况

Git建议我做

git rebase 起源/B

这对分支 C 有危险吗?

我应该早点将 C 重新定位到某个临时位置吗?

0 投票
2 回答
2591 浏览

mercurial - Mercurial:使用 hg pull --rebase 的具体问题示例

我正在努力寻找适合我们工作方式的反复无常的工作流程。

我目前支持每个功能的克隆,但这是从 Subversion 转变的思维方式的一个很大变化。我们在设置环境时的当前费用也会有问题。

使用 hg pull --rebase 似乎为我们提供了更多类似 Subversion 的工作流程,但从阅读中我对使用它持谨慎态度。

我想我理解这些概念,并且我可以看到重写历史并不理想,但我似乎无法提出任何我个人认为不可接受的方案。

我想知道 hg pull --rebase 可以从理论上或从经验中创建的“最坏”场景是什么。我想要具体的例子,而不是关于你是否“应该”重写历史的观点。并不是说我反对有意见的人,只是似乎已经有很多人在互联网上表达了他们没有很多例子来支持他们;)

0 投票
3 回答
101 浏览

git - 如何通过直接编辑补丁和元数据来更改历史记录?

Git 有很多修改历史的程序。
( rebase, filter-branch, commit --ammend, guilt, stacked git, 等)

但是,如果有一个程序将最后几个提交转换为包含一系列带有提交元数据的补丁的文件,有时可能会更可取,这些补丁可以自由编辑,然后转回重新设置历史记录(假设补丁仍然应用)。

有没有人有办法做到这一点?

0 投票
2 回答
1381 浏览

git - 公共 GIT-SVN 创建的仓库的公共和私有分叉的推荐工作流程

我正在尝试设置三件事:

  1. 公共 SVN 存储库的公共 GIT 镜像
  2. 该 repo 的公共分支,多个贡献者可以发布补丁
  3. 来自 #2 的公共回购的私人分叉

我知道如何做 #1,但我正在寻找关于 #2 和 #3 的建议:如何配置、如何保持同步、要避免的事情等。

这里有更多细节:

我正在使用一个基于 SVN 的开源 Web 应用程序,它的补丁提交机制缓慢且效率低下:补丁附加到问题跟踪系统中提交的错误上,几周或几个月后,这些补丁进入主干。

一个单独的问题是我需要维护一个项目的私有分支,其中包含只有我的公司才需要的附加功能。但是我想要一个简单的方法让我的 fork 跟上来自主干的最新官方提交。

我想找出一个基于 GitHub 的解决方案来解决这两个问题。我想结束三件事:

  • “镜像” - SVN 的 GitHub 镜像,通过我或其他补丁贡献者将运行的自动化过程(如本文中)自动与最新的 SVN 更改保持同步。这将使我或其他任何人都可以轻松地创建项目的公共或私有分支,而不会弄乱 SVN。
  • “contrib” - 对于我自己和我信任的一些补丁提交者,我想建立一个“镜像”的公共分支(或分支?),我们可以在其中提交我们希望最终出现在 SVN 中的补丁。这也可能使核心提交者更容易和更有效地将补丁拉回 SVN。
  • “ourfork” - 最后,我们公司希望建立一个“contrib”的私有分支,其中多个开发人员可以添加仅适用于我们公司实施的私有功能

一些具体问题:

  • 这种方法有意义吗?我们应该使用更简单的解决方案吗?
  • 如何确保“contrib”与“mirror”保持同步?只要它们不冲突,GitHub是否有自动应用新提交的魔法?假设没有,确保 contrib 与其父级保持同步的良好工作流程是什么?
  • “ourfork”在逻辑上将是“mirror”的孙子。什么是正确的工作流程来使其与“镜像”和“贡献”的更改保持同步?我应该将“contrib”设置为我唯一的遥控器吗?或者将两者都设置为遥控器 - 如果是这样,合并的正确过程是什么?

我阅读了@rq 对类似问题的回答,我怀疑它回答了上述大部分问题,但我是 Git 新手,我不确定他的回答是否适用于我的情况。