gpt4 book ai didi

git - 将大约 6k 的提交压缩为一个

转载 作者:行者123 更新时间:2023-12-04 20:22:19 26 4
gpt4 key购买 nike

我有一个网站,当我开始开发它时,我已经克隆了 Laravel github 存储库及其所有提交。现在我想删除所有原始提交,只留下我的。有什么办法吗?我试过 git rebase,但它需要手动选择所有 6k 提交并从最新的提交中删除。 (我需要最老的)。

最佳答案

我认为您可以通过 checkout 特定提交、在该提交处创建一个孤立分支,然后 rebase 到该分支来实现这一点。

  1. 在第一次提交之前检查提交
    git checkout <commit hash before your first commit>
  2. 创建一个孤儿分支。索引将包含处于该状态的文件,但不会有提交历史。
    git checkout --orphan foo
  3. 提交压缩的更改
    git commit -m 'Squashed!'
  4. 检查你的主分支
    git checkout <original branch name>
  5. rebase 到新的压缩分支。
    git rebase foo

我在 master 上用 5 次提交的存储库测试了这个:

* 40f82e6 - 5
* 78deb2c - 4
* aff34f8 - 3
* 15cd469 - 2
* 6e420cb - 1

让我们压缩前三个(输出被缩写):

$ git checkout aff34f8
Note: checking out 'aff34f8'.
HEAD is now at aff34f8 3

$ git checkout --orphan foo
Switched to a new branch 'foo'

$ git commit -m 'Squashed!'
[foo (root-commit) 933b62d] Squashed!

$ git checkout master
Switched to branch 'master'

$ git rebase foo
First, rewinding head to replay your work on top of it...
Applying: 1
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.
Applying: 2
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.
Applying: 3
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.
Applying: 4
Applying: 5

修改后,master 变成了这样:

* 5d908c9 - 5
* 477ee53 - 4
* 933b62d - Squashed!

关于git - 将大约 6k 的提交压缩为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60547591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com