问题标签 [git-interactive-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.
git - 使用“git rebase”重写消息时如何查看提交的内容?
我正在修复一系列提交的一些提交消息。我开始
标记一些提交以进行改写,然后编辑消息。如果我可以在编辑器中看到每个提交的差异,那将非常有帮助,就像在执行git commit -v
. 这样的事情可能rebase
吗?
(我也可以只edit
提交然后查看差异,但这要慢得多,也不方便。)
git - git rebase -i 快捷方式——找到最好的提交来重新设置
概括
在当前分支中查找也包含在任何其他分支中的最新提交的最快方法是什么?
奖励:该技术能否允许上述问题中的“任何其他分支”成为“任何其他远程分支”或“任何其他本地分支”?
背景
我喜欢使用git rebase -i
. 我的主要用例是在推送到远程之前重新组织提交。因此,我经常这样做git rebase -i origin/master
。因此,我为该操作设置了一个别名,称为git rewrite
.
问题是我并不总是想针对origin/master
. 例如,我可能正在一个分支上工作,而是想要git rewrite
做git rebase -i origin/branch
. 或者我可能正在当地的分支机构工作并git rewrite
想做git rebase -i localbranch
.
所以实际上,我正在尝试让我的git rewrite
脚本执行以下操作:“从包含在任何其他分支中的最后一次提交中进行交互式变基”。我想出的是:(仅适用于查找远程分支)
这种方法的问题是它很慢。这也有点不准确,因为当提交有多个父级时,它只跟随一个父级。
有谁知道这样做更好/更快/更清洁的方式?
git - 在 Git 中重写提交的代码
我有一个决定公开的 git 存储库,这意味着将数据库连接信息移动到 .gitignored 文件中。但是,我的存储库历史仍然包含我添加然后删除信息的提交。
我已经使用交互式 rebase 尝试了这个问题的解决方案,但这似乎只允许我更改/重新排序提交消息,而不是提交中包含的代码。
git - 为什么我的 git 交互式 rebase 会更改最后一条提交消息,然后在我进行推送时显示 Everything up-to-date?
我推送了我的最新更改
然后我用交互式变基修改了提交消息,即
并在最后一次提交中更改了消息。
这已成功保存,但是当我执行时,git push origin master
它只是说Everything up-to-date
.
现在 git 历史并没有显示实际所做的措辞更改?
但是,当我执行 agit commit --amend -m"msg"
然后尝试推动更改时,就会“看到”。
git - 将非线性提交合并为一个提交(制作香肠)
考虑以下 git 历史:
我如何将21f05f9
738ae0a
和2535dca
合并到一个提交中?
我尝试过git rebase -i 2535dca
, pick
ing2535dca
和squash
ing 21f05f9
and 738ae0a
,但出现以下错误:
我不确定是否有办法在 rebase 的交互模式下0534049
跳过提交。288ffd2
有没有更好的方法来做我正在做的事情?有什么陷阱吗?
编辑:
我开始明白的是,我真的不应该把自己放在需要非线性提交的地方,特别是如果这些提交都与一个文件有关。我可以看到一个提交可能会破坏代码或产生冲突的实例。
git - 如何变基(挤压)最后一次提交以掌握并更改提交消息
在 GitI 中有以下情况:
我想压缩这 4 个“ok”提交并更改消息
所以我要做的是
并打开了 GNU nano(我在 Ubuntu 上)编辑器
据我了解,我必须编辑此文件,但实际上我不知道如何。
git - 在不影响标签的情况下,使用git修改master历史的最佳方法是什么?
我正在为一本书编写一个示例应用程序。
每个重要的提交都被标记(例如 Ch01_Ex04、Ch03_Ex01),以便读者可以直接了解他们感兴趣的应用程序的状态。
我时不时地改变我在示例中所做的事情的想法,我想回到过去并改变,例如,类名。我希望从给定的提交中应用该更改,而无需重置所有标签。
说我有:
现在我想在 B 和 C 之间进行更改,所以我从 B 分支并进行更改,我有:
我想要的是:
我无法理解如何做到这一点。有办法吗?
git - 合并提交不会出现在 git rebase --interactive
git log
揭示以下内容:
合并提交对我来说没用——它不代表分支的有意义的状态,并且是从远程拉取生成的,所以我有远程历史的真实提交——不需要提交来标记我拉取的事实. 我想压缩这个合并提交。我做壁球的常用技巧是:
git rebase --interactive HEAD~2
(或者无论我需要走多远)
然后我会将它压缩到相邻的提交中。有时我会这样做,例如,我做了一个提交,意识到我错过了一个微小的重要细节(单个文件,或者没有更改其中一个文件中的一行),然后再做一次基本上只是一个快速的 oops 的提交。这样,当我将更改推回遥控器时,一切都很好,很干净,并且讲述了一个有凝聚力的故事。
但是,在这种情况下,当我运行git rebase ...
命令时,commit2abcd
不会出现!它似乎直接跳过2abcd
,而是显示1abcd
and 3abcd
。合并提交有什么特别之处可以防止它出现在 中git rebase --interactive
吗?我可以使用什么其他技术来压缩该合并提交?
根据@Cupcake的要求更新:
的输出git log --graph --oneline --decorate
如下所示:
有帮助吗?
git - Git:交互式变基列表不正确(太多)提交
当我运行时git rebase -i HEAD~2
,它列出了 11 个提交而不是 2 个。为什么?
在此之前我所做的是:
- 签出上游/分支A
- 用 master 重新调整我的新本地分支A副本
- 试图将我的本地分支 A 推回上游
- Git 抱怨分支不同步,要先拉到上游
- 将 upstream/branchA 拉入本地 branchA
- 将本地branchA推送到upstream/branchA(成功)
git - 如何在不跟踪远程分支的情况下压缩提交?
我有一个全新的 git repo。它有三个提交。
我想将它们压缩在一起,以便我的项目历史看起来很干净,而其他人看不到我的 hacky 提交。
显然没有其他人看过这个 repo,因为它是全新的,所以改变历史不是问题。我是唯一的用户。
但是git rebase -i
希望我跟踪上游分支。在整理 git 日志之前,我不想发布任何内容。
如何在不跟踪上游的情况下进行交互式 rebase 或一般的 squash 提交?