我做了一个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状态时,它显示了相同的修改文件:

> 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跟踪的另一个文件夹中有一个已经被Git跟踪的文件夹。例如,我有一个项目,我给它添加了一个子文件夹。在我将其中一个放入另一个之前,Git已经跟踪了它们。为了停止跟踪里面的文件,找到它并删除Git文件:

rm -rf .git

在我的例子中,我有一个WordPress应用程序,我在里面添加的文件夹是一个主题。所以我必须转到主题根目录,删除Git文件,这样整个项目就会被父级WordPress应用程序跟踪。

其他回答

你应该:

git commit . -m "save arezzo files"

你可以这样做:

git add -u -n

要检查哪些文件已修改并将被添加(预演:-n选项),然后

git add -u

添加修改过的文件

我发现这个问题出现时,我已经做了一个git添加。在下面我的.gitignore文件所在的子目录中(可以说是我的存储库的主目录)。尝试将目录更改到最上面的目录并运行git add。后面跟着git commit -m“我的提交消息”。

也许是显而易见的事情,但是……

如果索引有问题,可以使用git-gui。您可以很好地了解索引(暂存区)实际上是如何工作的。

另一个帮助我理解索引的信息来源是Scott Chacons的《Getting Git》第259页。

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

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

正如这条信息所说:

提交时不添加任何更改(使用"git add"和/或"git commit -a")

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

对于你的具体例子,你可以使用:

git commit -am "save arezzo files"

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

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

你也可以在git文档页面上找到关于如何使用git的通用文档和教程,它将提供关于分段/添加文件概念的更多细节。

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