我花了很长时间阅读并试图找出git commit --amend,但我仍然不明白#在editmsg中是如何使用的。
我很担心在不知道我在做什么的情况下编辑它,因为我已经读过git commit --amend只执行最近的提交,一旦我保存并退出,它将被视为新提交。
我不小心提交并推送(但推送失败)一些大文件。但我也编写了应该从与大文件相同的提交中推送的脚本。
我正在尝试删除新提交中包含大文件的行,但我不明白如何执行此操作。
这是我在下面的提交文件,但是如果我要删除带#的行(我试过这个但它没有工作,并且git日志是相同的),我不会理解:< / p>
the commit message of the one I want to change is here but I don't want to just change the message, I want to delete the large files in the commit so that the push works.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Thu Feb 8 18:30:32 2018 -0900
#
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
# (use "git push" to publish your local commits)
#
# Changes to be committed:
# new file: script.py
# new file: super_large_file.npy <--- I deleted this line but it appeared again, it is becuase deleting a line with # is ignored? Do I just rewrite the stuff after the # lines?
我的问题是,为什么删除大文件的行(包括#)不起作用,提交仍然想要推送大文件?
我应该在没有#的情况下重写提交文件吗?但我也读到git带走#,所以我很困惑
答案 0 :(得分:1)
首先,这些是注释:删除以#
开头的行对您的git存储库内容无效。
它们包括提示和提交中包含的文件列表。
为了真正从您的回购记录中删除该文件,我建议您使用新的git filter-repo
replaces BFG and git filter-branch
。
注意:如果在运行上述命令时收到以下错误消息:
Error: need a version of `git` whose `diff-tree` command has the `--combined-all-paths` option`
这意味着您必须update git
。
首先:执行一份本地存储库副本(新克隆)
请参阅“ Path based filtering”:
git filter-repo --path file-to-remove --invert-paths
最后,您可以(如果您是该存储库中唯一的工作人员)执行git push --force
第二,在提交消息中显示的提示随着Git 2.25.1(2020年2月)的变化而变化:当没有要提交的内容时,“ git commit
”给出的输出类似于“ git status
” ,但不遵守已更正的 advise.statusHints
configuration variable 。
参见discussion。
请参见commit 5c4f55f的Heba Waly (HebaWaly
)(2019年12月17日)。
(由Junio C Hamano -- gitster
--在commit 9403e5d中合并,2020年1月22日)
commit
:拒绝空提交时要兑现advice.statusHints
签名人:Heba Waly
在ea9882bfc4中(提交:在写入
COMMIT_EDITMSG,
时禁用状态提示2013-09-12)的目的是在写入COMMIT_EDITMSG,
时禁用状态提示,因为在像提交消息模板中的输出那样的“ git status”为时已晚,无法使用(他们说“ git add'to stage”之类的东西,但这只有在中止当前的“ git commit”会话之后才有可能)。但是在一种情况下,提示可能很有用:由于索引中未记录任何更改而导致当前的提交尝试被拒绝。
该消息已给出,并且出现“
git commit
”错误,因此用户可以立即遵循提示。教导代码路径以遵循配置变量。
提示(现在在提交消息编辑器中可见)将是:
no changes added to commit (use "git add" and/or "git commit -a")
答案 1 :(得分:0)
我尝试了一种与修改提交不同的方法,并从我的本地和github存储库中完全删除了该文件。我不知道如何将它保留在我的本地存储库中,但我不知道这是否必要,因为我不太了解本地存储库和本地驱动器之间的区别。
https://help.github.com/articles/removing-files-from-a-repository-s-history/
(我在Can't push to GitHub because of large file which I already deleted上找到了Bluemoon93及其答案的链接