为什么'git commit'没有保存我的更改?

问题描述 投票:241回答:12

我做了像这样的git commit -m "message"

> git commit -m "save arezzo files"
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

但之后,当我做git status它显示相同的修改文件:

> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

我究竟做错了什么?

git version-control git-commit
12个回答
388
投票

正如消息所说:

没有更改添加到提交(使用“git add”和/或“git commit -a”)

Git有一个“临时区域”,在提交之前需要添加文件,你可以read an explanation of it here

对于您的具体示例,您可以使用:

git commit -am "save arezzo files"

(注意标志中的额外a,也可以写成git commit -a -m "message" - 两者都做同样的事情)

或者,如果您希望对添加到提交的内容更具选择性,可以使用git add命令将适当的文件添加到临时区域,并使用git status预览即将添加的内容(记住要注意措辞)用过的)。

您还可以找到有关如何在git documentation page上使用git的一般文档和教程,它将提供有关暂存/添加文件概念的更多详细信息。

值得了解的另一件事是interactive staging - 这允许您将文件的一部分添加到临时区域,因此如果您进行了三次不同的代码更改(对于相关但不同的功能),您可以使用交互模式来拆分更改并依次添加/提交每个部分。像这样较小的特定提交可能会有所帮助。


0
投票

我有一个问题,即使在发布git add . git commit -am "image uploading" git push origin master 之后我正在做commit --amend,但它仍然无法正常工作。结果我做了一些git add .自定义,我的编辑器工作不正常。修复这些错误以便.vimrc返回正确的代码解决了问题。


0
投票

我有一个非常类似的问题与相同的错误消息。 “没有为提交而进行更改”,但是当我做差异时,它显示出差异。我终于想通了一段时间后我改变了一个目录案例。恩。 “PostgeSQL”改为“postgresql”。我记得现在有时git会在旧案例目录中留下一两个文件。然后,您将为新案例提交新版本。

因此git不知道依赖哪一个。所以要解决它,我不得不进入github的网站。然后你就可以查看这两种情况了。并且您必须删除不正确的套接目录中的所有文件。确保已保存正确的版本或在正确的套接目录中。

删除旧案例目录中的所有文件后,整个目录将消失。然后做一个提交。

此时,您应该可以在本地计算机上执行拉动,而不再看到冲突。因此能够再次提交。 :)


0
投票

如果您有一个从其他git-Repository克隆的子文件夹,首先您必须从子库中删除$ .git $文件:vim之后您可以更改为父文件夹并使用rm -rf .git


48
投票

您没有添加更改。要么通过特别添加它们

git add filename1 filename2

或添加所有更改(从项目的根路径)

git add .

提交时使用速记qazxsw poi:

-a

39
投票

你应该做:

git commit -a -m "message".

7
投票

你可以做到:

git commit . -m "save arezzo files"

检查您修改和将要添加的文件(干运行:-n选项),然后

git add -u -n

添加刚刚修改过的文件


7
投票

我将我在Git源代码控制下的一个小子项目复制到另一个项目中,忘了删除.git文件夹。当我去提交时,我得到了与上面相同的消息,并且在我删除git add -u 文件夹之前无法清除它。

这有点傻,但值得检查一下,在没有提交的文件夹下没有.git文件夹。


4
投票

当我在我的.git文件所在的子目录(我的存储库的主目录,可以这么说)下面的子目录中完成了git add .时,我发现这个问题出现了。尝试将目录更改为最上面的目录并运行.gitignore,然后运行git add .


4
投票

也许是一件显而易见的事,但......

如果索引有问题,请使用git commit -m "my commit message"。您可以非常好地了解索引(临时区域)的实际工作方式。

帮助我理解索引的另一个信息来源是Scott Chacons“Getting Git”第259页和前进。

我开始使用命令行,因为大多数文档只显示...

我认为git-gui和gitk实际上让我工作得更快,并且我摆脱了诸如“git pull”之类的坏习惯......现在我总是首先获取...在合并之前看看新的变化到底是什么。


4
投票

发生这种情况的原因是因为你有一个文件夹已被Git跟踪另一个文件夹,该文件夹也被Git跟踪。例如,我有一个项目,我添加了一个子文件夹。在我把一个放在另一个之前,他们都被Git跟踪了。为了停止跟踪内部的一个,找到它并删除Git文件:

git-gui

在我的情况下,我有一个WordPress应用程序,我在里面添加的文件夹是一个主题。所以我必须转到主题根目录,并删除Git文件,以便现在由父WordPress应用程序跟踪整个项目。


1
投票

如果你在我的情况下有更多的文件我有7000个图像文件当我尝试从项目的路径文件夹添加它们时它没有添加它们但是当我去图像文件夹时一切正常。浏览目标文件夹和命令,如abows

rm -rf .git

git push origin master枚举对象:6574,完成。计数对象:100%(6574/6574),完成。使用最多4个线程进行增量压缩压缩对象:100%(6347/6347),完成。写作对象:28%(1850/6569),142.17 MiB | 414.00 KiB / s

© www.soinside.com 2019 - 2024. All rights reserved.