gpt4 book ai didi

git - 从未推送的 Git 提交中删除文件(但不是最后一个)

转载 作者:行者123 更新时间:2023-12-04 04:36:50 25 4
gpt4 key购买 nike

我刚刚发现,在过去的提交中,我包含了不应该在存储库中的文件(.idea Webstorm 文件和其他文件)。这个提交“位于中间”,在它之前和之后都有未推送的提交。此外,在此提交中包含确实需要提交的文件,这些文件在以后的(未推送的)提交中进行了进一步修改。

我看过这些答案:Completely remove file from all Git repository commit historyRemove files from Git commit但他们似乎没有回答我的具体问题。解决方案是什么?

最佳答案

你的情况

我正在用 3 次未推送的提交创建您描述的情况:

$ git clone <url>
$ touch file1
$ git add file1
$ git commit -m "Correct 1st commit"
$ touch file2
$ touch webstormfile
$ git add .
$ git commit -m "Wrong 2nd commit with by mistake included WebStorm file"
$ touch file3
$ git add file3
$ git commit -m "Correct 3rd commit"
$ git log --oneline
$
$ ad73bfa Correct 3rd commit
$ eddae38 Wrong 2nd commit with by mistake included WebStorm file
$ ad219bf Correct 1st commit

删除已提交的 WebStorm 文件

注意:以下步骤将更改历史记录,这意味着,如果提交已被推送,更改历史记录将破坏所有团队成员的存储库。如果您还没有推送,您可以按照这些步骤操作,而不会打扰您的团队成员。

开始交互式 rebase ,包括错误提交的哈希 eddae38:

$ git rebase -i eddae38^

文本编辑器 pop 如下内容:

pick eddae38 Wrong 2nd commit with by mistake included WebStorm file
pick ad73bfa Correct 3rd commit

# Rebase ad219bf..ad73bfa onto ad219bf
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

在第一行中,将 pick 更改为 edit,保存文件并关闭文本编辑器。

注意!如果想保留您的 WebStorm 文件,请复制一份。然后,从提交中删除 WebStorm 文件:

$ git rm .\webstormfile

提交清理后的索引:

$ git commit --amend --no-edit

完成 rebase :

$ git rebase --continue

关于git - 从未推送的 Git 提交中删除文件(但不是最后一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19629303/

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