不要推送特定的提交
Dont push a specific commit
我的 git 设置和工作,我在 .gitignore
中指定了 .a 库,因此不会上传大文件。但在一次特定的提交中,我将其从 .gitignore
中删除,然后提交。推送后它给了我无法推送大文件的错误,为此我需要 Git LFS。我不想使用 Git LFS。我对代码进行了一些更改并将那些大文件更新为 .gitignore
但这些文件仍然被推送。任何解决方案如何克服上述情况。
我尝试从上面的分支创建一个新分支并尝试推送提交,但是在新分支中但它都是一样的。
你提交过一次的文件,即使你之后将它们添加到gitignore,也不会被忽略。最好的解决方案是使用交互式变基并删除该提交并将那些大文件保留在 .gitignore
中。就好像这些文件从未提交过一样。
您始终可以使用 git rebase
就地重写您的提交历史记录。请注意,不应通过此方法修改已推送的提交。
例如:使用 git rebase -i <BASE_COMMIT>
重写历史直到 BASE_COMMIT
(在您提交之前插入提交哈希以在此处删除)。然后,git 会向您显示直到 HEAD 为止的所有提交的列表。在这里,您可以通过更改前面的关键字来简单地修改这些提交。
在您的情况下,只需将错误提交前的 'pick' 更改为 'drop' 就足以从您的提交历史记录中删除该单个提交。
如果这个错误的提交包含其他有用的信息,您还可以将它与仅删除大文件的提交结合 ('squash')。这样,您提交的其他部分仍然有效。
请务必在删除此提交之前备份您的大文件,以确保它们不会丢失。
我的 git 设置和工作,我在 .gitignore
中指定了 .a 库,因此不会上传大文件。但在一次特定的提交中,我将其从 .gitignore
中删除,然后提交。推送后它给了我无法推送大文件的错误,为此我需要 Git LFS。我不想使用 Git LFS。我对代码进行了一些更改并将那些大文件更新为 .gitignore
但这些文件仍然被推送。任何解决方案如何克服上述情况。
我尝试从上面的分支创建一个新分支并尝试推送提交,但是在新分支中但它都是一样的。
你提交过一次的文件,即使你之后将它们添加到gitignore,也不会被忽略。最好的解决方案是使用交互式变基并删除该提交并将那些大文件保留在 .gitignore
中。就好像这些文件从未提交过一样。
您始终可以使用 git rebase
就地重写您的提交历史记录。请注意,不应通过此方法修改已推送的提交。
例如:使用 git rebase -i <BASE_COMMIT>
重写历史直到 BASE_COMMIT
(在您提交之前插入提交哈希以在此处删除)。然后,git 会向您显示直到 HEAD 为止的所有提交的列表。在这里,您可以通过更改前面的关键字来简单地修改这些提交。
在您的情况下,只需将错误提交前的 'pick' 更改为 'drop' 就足以从您的提交历史记录中删除该单个提交。
如果这个错误的提交包含其他有用的信息,您还可以将它与仅删除大文件的提交结合 ('squash')。这样,您提交的其他部分仍然有效。
请务必在删除此提交之前备份您的大文件,以确保它们不会丢失。