为什么';git提交';不保存我的更改?

为什么';git提交';不保存我的更改?,git,version-control,git-commit,Git,Version Control,Git Commit,我做了一个git提交-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

我做了一个git提交-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 commit . -m "save arezzo files"
正如信息所说:

未向提交添加任何更改(使用“git add”和/或“git commit-a”)

Git有一个“暂存区”,在提交文件之前需要在其中添加文件,您可以


对于您的特定示例,您可以使用:

git commit -am "save arezzo files"
(注意标志中额外的
a
,也可以写成
git commit-a-m“message”
,两者都做相同的事情)

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

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



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

您没有添加更改。或者通过

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

或在提交时使用速记
-a

git commit -a -m "message".

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

如果索引有问题,请使用。您可以很好地了解索引(临时区域)的实际工作方式

另一个帮助我理解索引的信息来源是Scott Chacons的“Getting Git”第259页及以后

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


我认为GitGUI和gitk实际上让我工作得更快,我也改掉了一些坏习惯,比如“GitPull”。。。现在我总是先拿。。。在合并之前,先看看新的更改是什么。

我将一个受Git源代码管理的小个子项目复制到另一个项目中,但忘记删除.Git文件夹。当我去提交时,我收到了与上面相同的消息,在删除
.git
文件夹之前无法清除它

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

您可以执行以下操作:

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

git add -u

要添加刚修改过的文件

我在我的
.gitignore
文件所在的子目录(可以说是我存储库的主目录)中执行了
git add.
之后,发现这个问题出现了。尝试将目录更改到最上面的目录,然后运行
git add.
然后运行
git commit-m“我的提交消息”
即使在发出
git add.
之后,我在执行
commit--amend.
时遇到了一个问题,但它仍然不起作用。原来我做了一些
.vimrc
自定义,我的编辑器工作不正常。修复这些错误,以便
vim
返回正确的代码,从而解决了问题。

发生这种情况的原因是,在另一个同样由Git跟踪的文件夹中,您有一个已经由Git跟踪的文件夹。例如,我有一个项目,并在其中添加了一个子文件夹。在我把一个放进另一个之前,Git一直在跟踪他们。要停止跟踪其中的一个,请找到它并使用以下命令删除Git文件:

rm -rf .git

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

我遇到了一个非常类似的问题,出现了相同的错误消息。“没有为提交而进行的更改”,但当我进行差异时,它显示了差异。我终于发现不久前我改变了一个案例。例如,“PostgeSQL”到“postgresql”。正如我现在所记得的,有时候git会在旧的case目录中留下一两个文件。然后,您将向新案例提交一个新版本

因此git不知道该依赖哪一个。所以为了解决这个问题,我不得不访问github的网站。然后您可以查看这两种情况。您必须删除不正确的cased目录中的所有文件。确保您保存了正确的版本,或者保存在正确的大小写目录中

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


此时,您应该能够在本地计算机上执行拉操作,并且不再看到冲突。因此能够再次提交。:)

如果您有一个子文件夹,它是从其他git存储库克隆的,那么首先您必须从子存储库中删除$.git$文件:
rm-rf.git

之后,您可以切换到父文件夹并使用
git add-A

如果我的案例中有更多文件,我有7000个图像文件当我尝试从project的route文件夹添加它们时,它没有添加它们,但当我转到image文件夹时,一切都正常。像abows一样遍历目标文件夹和命令

git add .
git commit -am "image uploading"
git push origin master
git push原始主机枚举对象:6574,完成。计数对象:100%(6574/6574),完成。增量压缩最多使用4个 线程压缩对象:100%(6347/6347),完成。书写对象: 28%(1850/6569),142.17 MiB | 414.00 KiB/s


使用git commit-am“save arezzo files”自动添加所有更改(w.r.t..gitignore)。您可能只想添加特定文件/dirs:
git add file.src
可能的重复:此外,我强烈建议用户使用交互式添加。尤其是当你试图
rm -rf .git
git add .
git commit -am "image uploading"
git push origin master