标签: squash

git merge:有没有办法强制--squash?

因此,我们项目的开发工作流程是这样的:我们创建一个任务/错误票据,然后我们分离master以处理任务/错误,并最终将其合并回master.我们希望master上的提交有很好的消息.在任务分支上提交的人可能没有好的提交消息,这没关系,但是如果要合并分支,那些带有不干净消息的提交将进入主服务器.

解决此问题的一种方法是始终使用--squash与master合并.这样,您就有机会提供良好的提交消息,并将整个提交范围视为一个.我想知道是否有办法强制执行?意思是,如果我们可以让git服务器拒绝不被压缩的合并?

git merge squash

3
推荐指数
1
解决办法
1681
查看次数

Git rebase -i什么都不做

git rebase -i没有按照我期望阅读各种在线文档和教程的方式遇到一些麻烦.

我正试图将我的最后四个提交压缩成一个.想象一下dev具有远程origin/dev和提交的分支

A -> B -> C -> D -> E
?                   ? dev
? origin/dev
Run Code Online (Sandbox Code Playgroud)

我想在这里结束:

     ? dev
A -> F
?
? origin/dev
Run Code Online (Sandbox Code Playgroud)

其中F包含来自B,C,D和E的所有变化.所以,鉴于我已经dev检查过,我应该能够运行git rebase -i origin/dev或者git rebase -i HEAD~4然后压缩C,D和E,对吗?

这是我的问题:运行任何一个rebase命令都不会弹出一个git窗口来做任何事情.控制台只返回:

Successfully rebased and updated refs/heads/dev.
Run Code Online (Sandbox Code Playgroud)

我很困惑,为什么交互式rebase无法正常工作?我的Git配置有问题吗?

更新

git config --global rebase.autoSquash 没有回报

git rebase squash

3
推荐指数
1
解决办法
2020
查看次数

将帅哥重组为提交

我对一些代码进行了重大的重构,在此过程中,我多次提交。尚未将其推送到任何公共仓库。在推送之前,我现在想将提交重新组织成逻辑单元。问题是我不仅要压缩提交内容,还希望将大块重新组织为其他提交内容。

为了清楚起见,我将A与B1,B2,B3一起提交,并将B与B1,B2,B3进行。我想签出A之前的版本,并拥有新的提交C,带有大块A1,A2,B2和新的提交D,带有大块B1,B3,A3。

提前致谢。

git commit squash

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

如何创建包含从另一个分支到一个节点的所有提交的兄弟分支?

我有一个分支,mybranch,有六个提交,源于提交C.我想创建一个新的分支,也基于提交C,有效地包括mybranch的所有提交,压缩成一个提交.最简单的方法是什么?

我需要做到这一点,因为在你git-push之前"壁球"的口号.对于新的分支,我不希望在历史上提到远程服务器的mybranch.我想创建一个用于推送的全新分支的原因是因为我想保留mybranch中的所有提交以供参考.

git branch commit squash

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

是否有可能重新获得提交的历史记录

Git新秀在这里。我将多个提交压缩为一个提交,并将单个提交已推送至远程存储库。现在,我想找回一些压缩的提交。可能吗?

git squash

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

如何压缩有孩子的分支上的提交

所以我遇到了一个情况,有一个主分支和一个继续它的错误修复分支。我尝试压缩 master 上的一些提交,然后重新修复 bugfix,但遇到了合并冲突。正确的做法是什么?我在本地工作,没有远程。

它看起来像这样:

A - B - C - D - E - F [master]
                     \                 
                      G - H - I - J - K [bugfix]
Run Code Online (Sandbox Code Playgroud)

我想压缩 A - B - C - D - E - F 并且仍然有错误修复继续压缩的主分支。

git rebase squash

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

Git:如何将现有的`merge`转换为`merge --squash`?

我执行了多次merge提交,但它们应该是merge --squash相反的.解决冲突花了一天多的时间,所以我不能手工重做合并.

有没有办法将其转换mergemerge --squash

git merge git-merge squash git-squash

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

Git rebase squash通过哈希提交

我有一个大约10个提交的分支.其中3个是合并提交,将master与我的分支合并,并在每次之间添加~500个提交.有没有办法压缩当前分支上的提交?我的历史看起来像这样:

ad54ef86 My Commit 1
ad54ef86 Merge commit
ad54ef86 Others' Commits
....500 more others' commits
ad54ef86 My Commit 2
ad54ef86 My Commit 3
ad54ef86 Merge commit
ad54ef86 Others' Commits
....500 more others' commits
ad54ef86 My Commit 4
...
Run Code Online (Sandbox Code Playgroud)

现在做git rebase -i HEAD~2000和搜索是很多工作.它有办法吗?

编辑:所以这个问题被标记为Squashing最后n次提交的副本.这显然不是我的问题.我想压缩在我当前分支上进行的最后n次提交之后我合并该分支中的另一个分支并获得所有这些提交.

git rebase squash

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

我的分支在“挤压和合并”后发生了分歧。我该如何解决这个问题?

我进行了“挤压并合并”来关闭 PR。虽然现在所有的变化都呈现出来master,但仍然说分支已经分叉,前后仍然有变化。

This branch is 1 commit ahead, 28 commits behind develop. 
Run Code Online (Sandbox Code Playgroud)

我该如何解决?后面的 28 个提交是在“压缩和合并”期间被压缩的。我已经通过https://help.github.com/en/github/administering-a-repository/about-merge-methods-on-github#squashing-your-merge-commits,但找不到任何连接。

我假设(错误地?)“挤压并合并”会进行快进合并以防止发散。我不希望所有提交都从develop移动到master,这就是为什么我进行了“压缩和合并”,而不是变基。我想我错过了一些关于挤压和合并的事情。

我已经在 SO 上遇到了类似的问题,但最终建议在合并到master. 但我不想失去历史develop

git merge github squash pull-request

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

将我的所有提交(包括合并)压缩到一个提交中而不改变历史记录

假设我在我的分支机构中有100个提交,我已经工作了3个星期.偶尔(每天,真的)我从origin/master拉出来并将它合并到我的分支中.

我怎么能(轻松地)将我的所有提交压缩成一个提交而不会弄乱历史?如果我以某种方式将我的所有提交压缩成一个,当我的pull请求移动到origin/master时,我会破坏合并的origin/master pull吗?

git squash

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

是否可以在不更改提交的哈希值的情况下压缩提交?

我忘了将文件添加到我已经推送的提交中并为其创建了拉取请求.拉取请求被拒绝(由于其他原因).我现在想要将丢失的文件添加到原始提交中,然后在发出新的拉取请求之前在新提交中执行请求的更改.但是,git rebase将遗留文件的提交压缩到旧文件中会更改提交的哈希值,从而导致对GitHub产生奇怪的影响.有没有办法做我正在尝试或我必须让丢失的文件在自己的提交?

我是唯一使用我的存储库的人.Pull请求是对其他用户的唯一引用.

git github rebase squash

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

当我尝试压制时,为什么我会"丢失"Git提交?

我的git log命令产生以下内容:

commit 568a9783f75b0c1ab12499beb32b518e19ab60c0 (HEAD -> master, origin/master)
Merge: 7428e09 e7c1537
...

commit 7428e0947bb47a3fdc46a1ea053bd86aa87934c8
...

commit e7c15371f39f4183c5f8c0645051a022851902f2
Merge: e715e8a ae7d067
...

commit ae7d06745891c215cc2980df520656509e4e36ef
...
Run Code Online (Sandbox Code Playgroud)

在提交7428e0947bb47a3fdc46a1ea053bd86aa87934c8(上面第二个)时,一些敏感信息被意外地检入存储库,因此我想用之前的提交来压缩它.

我想按照这里的说明操作:

如何在推送后压缩git中的提交?

首先,我删除了敏感信息,然后提交了更改:

git add .
git commit -a -m "Remove sensitive info"
Run Code Online (Sandbox Code Playgroud)

Git日志现在看起来像:

commit d6d1954c10bd71cc33f24222d1e36b3116eb7775 (HEAD -> master)
...

    Remove sensitive info

commit 568a9783f75b0c1ab12499beb32b518e19ab60c0 (origin/master)
Merge: 7428e09 e7c1537

commit 7428e0947bb47a3fdc46a1ea053bd86aa87934c8

commit e7c15371f39f4183c5f8c0645051a022851902f2
Merge: e715e8a ae7d067
...

commit ae7d06745891c215cc2980df520656509e4e36ef
...
Run Code Online (Sandbox Code Playgroud)

现在我跑:

git rebase -i origin/master~4 master
Run Code Online (Sandbox Code Playgroud)

我得到:

...
pick ae7d067 ...
pick d6d1954 Remove sensitive …
Run Code Online (Sandbox Code Playgroud)

git rebase squash

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

如何通过 git pull 来对具有多个合并提交的功能分支进行变基,以便能够压缩它们

在某些情况下,我在功能分支上执行 git pull 操作,最终得到多个烦人的“合并提交”,我可以理解它们为什么会发生,但我想将它们合并起来,使其看起来像正常提交。

我尝试使用git rebase -i --rebase-merges HEAD~4但无法弄清楚如何压缩合并提交。

我做了进一步的研究,经过大量的挖掘,我能够执行以下操作,使用 rebase 将不需要的合并提交合并到正常提交中,然后在需要时压缩它们:

git checkout feature
git pull  # will create merge commits
git checkout featur_backup  # to create a backup
git switch --orphan emty_commit
git commit -m "First empty commit for the feature branch" --allow-empty
git switch feature
git rebase empty_commit
git rebase -i --root  # this allows you to squash commits
git branch -D empty_commit
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来合并合并提交?

笔记:

  • 该功能分支是一个孤立分支
  • 文件从主分支单独签入功能分支
  • 此功能分支用于编译要在目标计算机上应用的更改
  • 更改是在来自不同机器的功能分支中进行的,这就是为什么我们最终会在 git pull 后看到合并提交。

git merge commit rebase squash

0
推荐指数
1
解决办法
2704
查看次数

标签 统计

git ×13

squash ×13

rebase ×6

merge ×4

commit ×3

github ×2

branch ×1

git-merge ×1

git-squash ×1

pull-request ×1