问题标签 [git-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 投票
8 回答
31096 浏览

git - 如何知道是否正在进行 git rebase?

当我启动 agit rebase -i时,我可以发出git rebase --continue, 或之类的命令git rebase --abort。这些命令仅在 rebase 正在进行时才有效。

我怎么知道是否有正在进行的变基?

(我将非常感谢有关 rebase 如何在内部工作的一些细节;git 对 rebase 做了什么,使其处于“rebase in progress”状态,?)

0 投票
5 回答
40720 浏览

git - 如何压缩两个非连续提交?

我对 git 中的整个变基功能有点陌生。假设我做了以下提交:

之后,我意识到它D包含一个依赖于添加的一些新代码的修复A,并且这些提交属于一起。我如何将A&D挤在一起,然后B独自C离开?

0 投票
2 回答
606 浏览

git - 如何保留要压缩到另一个提交的时间?

我在一个分支“开发”中工作,当准备好与 master 合并时,使用交互式 rebase 将我所有的小提交压缩到一个包含功能的提交中,然后将其应用在 master 之上。

效果很好,我唯一的问题是标记提交的时间是第一个小提交。这是有道理的,因为这是唯一被“挑选”的提交,其余的被“压扁”。任何人都知道如何将集中提交标记为最后一个小提交的时间而不是第一个?可以通过“编辑”最早的提交并将后来的提交压缩到这个提交中来做到这一点(我大概可以编辑时间属性)但是有更好的方法吗?

0 投票
3 回答
48058 浏览

git - 如何同步同一 Git 存储库中的两个分支?

这是我经常遇到的一个常见的工作流程障碍:

master是我们的“稳定”分支

在分支上创建模块

在 master 或其他分支上工作

在接下来的几周内,更多的代码将直接提交给 master 并由其他分支提交。分支在foo这段时间内将保持不变。

在foo分支上恢复工作/进行更新

不好了!foo已经过时了!我明白为什么,但我确实需要foo重新同步。

问题

如何从master分支获取最新内容?

0 投票
1 回答
180 浏览

git - 我会在这个 Git rebase 工作流程中遇到麻烦吗?

我刚刚了解了变基,并且强烈警告我在将提交推送到远程后不要变基。我想确保我不会爆炸我的存储库

示例提交历史

  • 在这里,master 分支上的所有提交都可能已推送到 origin/master。

  • Z是 git-merge 通过将已完成的 foo 分支 (Y) 与当前主分支 (E) 合并来进行的自动提交。

  • 自从 foo 模块完成后,master 做了一些更新(F 和 G)。


以下是我想使用 rebase 的方式。

是时候对 foo 分支进行一些更新了,但是它与 master 分支不同步。

  1. 可以简单地git rebase master在最新的 foo 分支上包含 F 和 G 提交吗?

  2. 你能修改我的图表以显示我的提交历史之后的样子吗?

0 投票
3 回答
16434 浏览

git - 有人将变基或重置推送到已发布的分支后,我如何恢复/重新同步?

我们都听说过永远不应该对已发布的作品进行变基,这很危险,等等。但是,我还没有看到任何有关如何处理变基发布的情况的食谱

现在,请注意,只有当存储库仅由已知(最好是小)的一群人克隆时,这才是真正可行的,所以无论谁推送 rebase 或 reset 都可以通知其他人他们下次需要注意拿来(!)。

如果您没有本地提交foo并且它被重新定位,我见过的一个明显的解决方案将起作用:

foo根据远程存储库,这将简单地丢弃本地状态以支持其历史记录。

但是,如果一个人在该分支上进行了大量的本地更改,那么如何处理这种情况呢?

0 投票
3 回答
262 浏览

git - git:删除由一系列错误提交引入的更改

假设我有一个 git repo,有这样的提交历史:ABCDE

现在,我突然意识到,提交 B 和 C 是完全有缺陷和不必要的。另外,假设我有重写项目历史的完全自由(也许我正在单独从事该项目)。

我有另一个分支指向提交 B 和 C,所以丢失它们不是问题。如果我真的需要这些更改,我可以签出该分支并查看它们。

但是对于 master 分支,我想强制历史为 AD'-E',其中 D 和 E 不仅有修改的父列表,而且不包含提交 B 和 C 引入的更改。

这可能吗?如果是这样,怎么办?

0 投票
2 回答
1273 浏览

git - 如何合并两个 git 提交

我已经完成了一系列提交,现在我看到我希望合并 2 个提交。不是最后两个,但有点远

我的日志:

所有四个提交都在更改单独的文件,因此不会有任何合并冲突。

我想将 652b4(添加的 longtable)添加到 94126(添加的缩写)提交中。我怎样才能做到这一点?

0 投票
4 回答
16235 浏览

git - 在 Git 中展平旧历史

我有一个运行了一段时间的 git 项目,现在我想抛弃旧的历史,比如说从开始到两年前。扔掉我的意思是用一个单一的提交替换这段时间内的许多提交。

我检查了git rebase -i,但这并没有删除包含来自 git 的所有提交的其他(完整)历史记录。

这是一个图形表示(d 是变更集):

我想要的是:

怎么可能做到这一点?谢谢。

编辑

我得到了它的工作

cd1e8c9 是要压缩的开始修订(基础)。然后我使用 fixup 将修订合并在一起。谢谢。

0 投票
1 回答
516 浏览

git - 一步复杂的交互式变基?

我在 git 中有两个具有这种形状的分支。

我想像使用 rebase --interactive 一样对提交进行 rebase 和重新排序。但是我想交错几个提交并以这样的形状结束。

有没有办法一步完成这个变基?我尝试通过在提交 e 之上重新设置提交 b 并执行第二个交互式 rebase 来对所有提交进行排序,从而分两步进行。问题是我得到了合并冲突(例如,在提交 b 和提交 e 之间),否则我不会看到(通过在提交 a 之后放置提交 b)并且不值得解决冲突。