Git:没有添加内容进行提交,但存在未跟踪的文件。

100

我是Git的新手,第一次使用。希望有人能帮助我。我在论坛上尝试寻找答案,但出现了许多命令,不确定该使用哪一个。

在生产服务器上,如果我执行git pull命令,它会给我以下错误:

未跟踪的文件: (使用“git add...”将其加入要提交的内容中)

Optimization/language/languageUpdate.php
email_test.php
nothing added to commit but untracked files present (use "git add" to track)
Please move or remove them before you can merge.

我不太确定如何让它工作。如果我把它们移除了,那么从哪里移除它呢?期待您的回复。

7个回答

82

这里有两个选项。你可以像警告信息建议的那样将未被跟踪的文件添加到 Git 仓库中,或者将文件添加到你的 .gitignore 文件中以让 Git 忽略它们。

使用 git add 命令来添加文件:

git add Optimization/language/languageUpdate.php
git add email_test.php

要忽略这些文件,请在你的.gitignore文件中添加以下行:

/Optimization/language/languageUpdate.php
/email_test.php

无论哪种选择,都应该允许之后的git pull成功。


好的,如果我添加它们,它会被添加到服务器还是我的本地? - user4943236
棘手的问题。如果您使用git add,那么这些文件将被您的Git存储库跟踪。这意味着它们将出现在本地或远程的任何分支中。如果您不希望发生这种情况,请使用.gitignore选项。如果您甚至不需要这些文件,可以将它们删除。 - Tim Biegeleisen
谢谢。完成此操作后,会显示以下错误:错误:合并时将覆盖对以下文件的本地更改: Optimization/language/update.php 请在合并之前提交您的更改或将它们存储。 - user4943236
2
我个人喜欢这个网站(http://www.gitguys.com/),虽然有很多教程可供选择。掌握Git并不是选择正确的教程,而是通过使用它来获得经验。今天你已经做到了 :-) - Tim Biegeleisen
谢谢,但是学习 Git 的代价太高了,可能会导致我失去工作。哈哈 - user4943236
显示剩余2条评论

76

另外,我们可以像下面这样做,而不是手动添加每个文件:

git add --all
OR
git add -A

这也会删除任何不存在或已删除的文件(当前工作目录中已跟踪但现在不存在的文件)。

如果您只想添加已跟踪且已更改的文件,您需要执行

git add -u

git add .git add --all有什么区别?


我尝试了同样的事情,但它显示“警告:无法访问<path>:权限被拒绝”... - vishwaraj
有些人认为这是一种不好的做法,因为你刚刚添加了哪些文件呢?你不知道。你的Bash命令历史记录永远不会成为你行动的有用日志。你将盲目依赖于你的.gitignore的有效性,并且当构建工件像Makefiles实际上是自动生成的(在某些项目中是这样的情况)时,你可能会意外地提交它们。 - Scott Prive
@Crossfit_and_Beer 我有点同意你的看法,但如果你的gitignore文件出了问题,首先你应该修复它,而不是在使用损坏的gitignore时不方便地添加每个单独的文件或从缓存中删除每个文件。此外,git status是你的好朋友,可以进行双重检查。 - Viv
或者你可以使用 git add . 确保包含 . - Eoin

20
请按照以下步骤进行:

首先安装git bash并在git上创建一个仓库

1)进入您要推送到远程的文件所在的工作目录,并通过以下方式创建.git文件夹:

$ git init

2)将文件添加到您的新本地资料库中。

$ git add .
注意: 当您在同一文件夹中时,确保在命令后放置点号,如果您放置路径不要放置点号,否则会产生歧义。
3) 将您在本地代码库中暂存的文件提交。
$ git commit -m "First commit"**

4) 然后进入Git存储库并复制远程URL

$ git remote add origin *remote repository URL

5)

$ git remote -v
注意:这将要求用户提供user.email和user.name,只需按照配置中的要求填写即可。
6)
$ git push origin master

这将把整个提交的代码推送到存储库上的FILE.git

我认为我们完成了


1
这解决了我的问题,我使用 git reset --hard master 来重置我的“扭曲进度”,并执行此解决方案,它有效了。谢谢!! - Michael Harley

4

如果有人只关心错误消息nothing added to commit but untracked files present (use "git add" to track),而不关心Please move or remove them before you can merge.。您可以查看Git - Won't add files?上的答案。

在那里,您至少可以找到两个与此问题相关的好候选解决方案:您可能位于子文件夹或父文件夹中,但不在实际的仓库文件夹中。如果您在目录中高了一级,这肯定会引起该消息“nothing added to commit ...”,请参阅链接中我的答案以获取详细信息。我不知道当您在子文件夹中时是否会出现相同的消息,但这很可能符合您的解释。


2

请按照以下步骤操作。

步骤1:初始化git。

$ git init

步骤二: 检查文件是否存在。
$git ls

第三步: 添加文件。
$git add filename

第四步: 添加注释以显示

$git commit -m "your comment"

第五步:连接到您的代码库。
$git remote add origin  "copy repository link  and paste here"

步骤6:将代码推送至Git

$ git push -u origin master

1
如果您已经尝试使用git add .命令添加所有未跟踪的文件,请确保您不在根项目的子文件夹下。 git add .将会把当前子文件夹下的所有文件暂存。

0
问题 所以,也许你对同一个项目有多个文件夹。
解决方法: 使用文件浏览器进入你正在工作的项目的主文件夹,如果你看到项目的重复文件夹,只需删除重复的文件夹,直到只剩下最初的文件夹或一个文件夹。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接