标签: git-interactive-rebase

合并提交不会出现在git rebase --interactive中

git log 揭示以下内容:

commit 1abcd[...]
Author: [...]
Date: [...]

    [Useful commit]

commit 2abcd[...]
Author: [...]
Date: [...]

    Merge branch [...] of [etc. etc.]

commit 3abcd[...]
Author: [...]
Date: [...]

    [Useful commit]
Run Code Online (Sandbox Code Playgroud)

那个合并提交对我来说没用 - 它不代表一个有意义的分支状态,而是从远程拉动生成的,所以我有远程历史的真实提交 - 不需要提交来标记我拉的事实.我想压缩这个合并提交.我常用的壁球技术是:

git rebase --interactive HEAD~2 (或者我需要去的远方)

然后我会把它压成邻近的提交.我做了一些这样的事情,例如我做了一个提交,意识到我错过了一个很小的重要细节(单个文件,或者没有更改其中一个文件中的一行),并做了另一个提交,基本上只是一个快速的oops.这样,当我将我的更改推回到遥控器时,一切都很干净,并且讲述了一个有凝聚力的叙述.

但是,在这种情况下,当我运行git rebase ...命令时,提交2abcd不会出现!它似乎跳过了正确的2abcd显示1abcd3abcd.合并提交有什么特别之处可以阻止它出现git rebase --interactive吗?我可以用什么其他技术来压缩合并提交?

UPDATE每@蛋糕的要求:

输出git log --graph --oneline --decorate看起来像这样:

* 1abcd (useful commit)
* 2abcd (merge)
|  \ <-- from remote …
Run Code Online (Sandbox Code Playgroud)

git git-interactive-rebase

25
推荐指数
2
解决办法
1万
查看次数

如何在跳过特定提交时重新绑定?

有没有办法在另一个分支上跳过特定(冲突)提交的同时将分支重新绑定到另一个分支?

例如,我要重订mybranchmaster,但主包含提交,将与主的提交冲突,所以我更愿意撤消完全提交.

-o-o-o-o-o-x-o-o-o-o master
     |
     o-o-o-o mybranch
Run Code Online (Sandbox Code Playgroud)

x标记冲突的提交.

git rebase git-rebase git-interactive-rebase

21
推荐指数
1
解决办法
2万
查看次数

如何在不跟踪远程分支的情况下压缩提交?

我有一个全新的git repo.它有三个提交.

我想将它们挤在一起,这样我的项目历史看起来很干净,而其他人则看不到我的hacky提交.

显然没有其他人看过回购,因为它是全新的,所以改变历史不是问题.我是唯一的用户.

但是git rebase -i要我跟踪一个上游分支.在我整理git日志之前,我不想发布任何内容.

如何在不跟踪上游的情况下进行交互式rebase或压缩提交?

git git-interactive-rebase

17
推荐指数
1
解决办法
2101
查看次数

git rebase -ia分支到自己

我的回购中有以下内容

Master---
     \
       Next-->Commit A.1,Commit A.2,Commit A.3 --......
Run Code Online (Sandbox Code Playgroud)

我想将A.*提交修复为一个描述特征A的提交.我试过了git rebase -i origin next,但是这没有按照我的预期工作.有没有办法实现这个?

我想创建一个分支foo,它本质上是下一个,然后在foo下面重新绑定到merge/delete foo.但是,这似乎很草率.

git git-interactive-rebase

16
推荐指数
1
解决办法
7018
查看次数

Git:交互式rebase列出不正确(太多)提交

当我运行时git rebase -i HEAD~2,它列出了11个提交而不是2.为什么?

在此之前我所做的是:

  1. 检查了上游/分支A.
  2. 重新使用master的新本地branchA副本
  3. 试图将我的本地分支A推回上游
    • Git抱怨分支机构不同步,并且首先进入上游
  4. 将上游/分支A拉入本地分支A.
  5. 将本地分支A推送到上游/分支A(成功)

git git-interactive-rebase

14
推荐指数
1
解决办法
4292
查看次数

当 VSCode 设置为 Git 编辑器时中止交互式 Rebase

我已将 VSCode 设置为我的 git 编辑器,详细信息请参见此处

当我尝试这样做时:git rebase HEAD~3 -i它会打开一个新的代码窗口,一旦交互式变基 VSCode 窗口关闭,包含触发命令的终端的窗口就开始执行变基。

据我所知,编辑器需要发出错误代码来中止变基。

我不确定是否有办法在 VSCode 中执行此操作,或者我是否需要在他们的 git 存储库上打开问题/增强?或者你应该清除所有的行然后关闭它应该是相同的?这会中止它吗?

git-rebase git-interactive-rebase visual-studio-code

11
推荐指数
3
解决办法
3万
查看次数

Git从一个分支到另一个分支

我有以下情况:

                          K---L new-feature
                         /
                H---I---J dev-team1
               /
              E---F---G dev-main
             /
A---B---C---D master
Run Code Online (Sandbox Code Playgroud)

而且我想在dev-main分支中只移动新功能(K --- L)分支而没有(H --- I --- J)形式dev-team1

                H---I---J dev-team1
               /
              E---F---G---K---L dev-main
             /
A---B---C---D master
Run Code Online (Sandbox Code Playgroud)

git branch git-rebase git-branch git-interactive-rebase

10
推荐指数
1
解决办法
4621
查看次数

Git:交互式地修改一系列提交

我正在尝试rebase -i在我的历史中发生的一些提交.说我有这样的日志:

* 5e32fb0 (HEAD -> master) Add latest feature
* 106c31a Add new feature
* 2bdac33 Add great feature
...100 other commits...
* 64bd9e7 Add test 3
* 3e1066e Add test 2
* 26c612d Add test 1
* 694bdda Initialize repo
Run Code Online (Sandbox Code Playgroud)

我想压缩3次测试提交.在这些情况下,git rebase -i HEAD~106不是很实用.我正在寻找的是类似的东西git rebase -i 64bd9e7:26c612d.

git是否有这种行为,如果是这样,我该如何使用它?

我看过这篇文章,但它没有回答我的问题.

git rebase git-interactive-rebase

8
推荐指数
3
解决办法
6256
查看次数

如何运行git rebase交互模式以删除重复的提交

当我最近提交时,我犯了一个错误.(我首先忘记了"git fetch --all",然后是rebase),并且我已经提交并推送到远程分支.现在我通过先获取,解决了冲突并推送到远程分支来正确地完成了rebase.现在,似乎我最近的所有提交都出现了两次.我想做的是使用git rebase交互模式,选择我想要的所有提交,然后正确地重新绑定到提交sha代码.这是这样做的方法吗?如果我启动git rebase -i,我应该使用哪个sha代码,原始分支点sha代码?还是最新的沙码?谢谢,

大卫

git git-rebase git-interactive-rebase

6
推荐指数
2
解决办法
5049
查看次数

如何压缩和编辑相同的提交?

当我在 git 中进行交互式 rebase时,我如何squash提交并停止edit相同的提交?

git git-rebase git-interactive-rebase

6
推荐指数
2
解决办法
919
查看次数