github中commit_editmsg中的注释是什么

时间:2018-02-09 05:34:19

标签: github git-commit amend

我花了很长时间阅读并试图找出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带走#,所以我很困惑

2 个答案:

答案 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 5c4f55fHeba 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及其答案的链接