为什么git commit不保存我的更改?

我做了这样的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 add”和/或“git commit -a”)

Git有一个“暂存区”,在提交之前需要添加文件,你可以在这里阅读它的解释 。

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

 git commit -am "save arezzo files" 

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

或者,如果你想更多地select你添加到提交的内容,你可以使用git add命令将相应的文件添加到临时区域,并使用git status来预览将要添加的内容(记住要注意所用的措辞)。

你也可以在git文档页面find关于如何使用git的一般文档和教程,它将给出关于分段/添加文件概念的更多细节。

另一件值得了解的事情是交互式分段 – 这允许你将一部分文件添加到分段区域,所以如果你做了三个不同的代码改变(相关但不同的function),你可以使用交互模式来分割依次更改和添加/提交每个部分。 有这样小的具体提交可能会有所帮助。

您没有添加更改。 要么通过专门添加它们

 git add filename1 filename2 

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

 git add . 

或使用简写-a在提交时:

 git commit -a -m "message". 

你应该做

 git commit . -m "save arezzo files" 

我把我在git源代码下的一个小的子项目复制到另一个项目中,忘了删除.git文件夹。 当我去提交了与上面相同的消息,并且无法清除,直到我删除.git文件夹。 有点傻,但值得检查的是,在没有提交的文件夹下没有.git文件夹。

你可以做一个:

 git add -u -n 

要检查你修改了哪些文件并将要添加(干运行:-n选项),然后

 git add -u 

只添加修改的文件

也许一个明显的事情,但…

如果您对索引有问题,请使用
git gui
您可以很好地了解指数(中转区域)的实际工作情况。

另一个帮助我理解索引的信息来源是Scott Chacons“Getting Git”第259页,然后转发。

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

我认为git gui和gitk实际上让我工作得更快,我摆脱了像git pull之类的不良习惯…现在我总是先取…看看在我合并之前新的变化是什么。

我发现这个问题出现在我做了一个git add . 在我的.gitignore文件所在的子目录 (我的仓库的主目录,可以这么说)。 尝试改变目录到最上面的目录并运行git add . 接着是git commit -m "my commit message"

之所以发生这种情况是因为你有一个文件夹已经被git跟踪的另一个文件夹中的git跟踪。 例如,我有一个项目,我添加了一个子文件夹。 在我把一个放在另一个里面之前,他们都被git跟踪了。 为了停止跟踪里面的一个,find它,并删除git文件

 rm -rf .git 

在我的情况下,我有一个wordpress应用程序,我添加的文件夹是一个主题。 所以我不得不去主题根,并删除git文件,以便整个项目现在将由父,wordpress应用程序跟踪。

我有一个问题,即使在发出git add .之后,我也在做commit --amend git add . 它仍然没有工作。 原来我做了一些.vimrc自定义,我的编辑器不能正常工作。 修复这些错误,以便vim返回正确的代码来解决问题。