Git:没有添加到提交但存在未跟踪的文件

Posted

技术标签:

【中文标题】Git:没有添加到提交但存在未跟踪的文件【英文标题】:Git:nothing added to commit but untracked files present 【发布时间】:2016-02-04 10:26:35 【问题描述】:

我是 Git 新手,也是第一次使用。如果有人可以帮助我,我将不胜感激。我试着在论坛上找到答案,但是有大量的命令出来了,不知道该用哪一个。

在 prod 服务器上,如果我执行 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.

我不太确定如何使它工作。如果我删除它们,它将从哪里删除。感谢您的回复。

【问题讨论】:

【参考方案1】:

这里有两个选择。您可以将未跟踪的文件添加到您的 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 在之后成功。

【讨论】:

好的,如果我添加它们,是添加到服务器还是添加到我的本地? 棘手的问题。如果您使用git add,那么文件将被您的 Git 存储库跟踪。这意味着它们将出现在本地或远程的任何分支中。如果您不希望发生这种情况,请使用.gitignore 选项。如果你真的不需要这些文件,你可以删除它们。 谢谢你,这样做之后,它说:错误:您对以下文件的本地更改将被合并覆盖:Optimization/language/update.php 请在您之前提交您的更改或存储它们可以合并。 您添加了一个新文件,Git 将其检测为更改。所以你必须通过git commit -m 'Added update PHP script'来提交这个。 我个人喜欢this site,虽然那里有很多教程。掌握 Git 与其说是选择正确的教程,不如说是获得使用它的经验。你今天已经做到了:-)【参考方案2】:

除了手动添加每个文件,我们还可以执行以下操作:

git add --all

git add -A

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

如果您只想添加已跟踪并已更改的文件,您会想要这样做

git add -u

What is the difference between git add . & git add --all?

【讨论】:

我尝试了同样的事情,但它显示“警告:无法访问 :权限被拒绝”...... 有些人认为这是一种不好的做法,因为您刚刚添加了哪些文件?你不知道。你的 Bash 命令历史永远不会作为你操作的有用日志。您将盲目依赖 .gitignore 的有效性,并且您可能会在实际自动生成时意外提交 Makefiles 等构建工件(就像某些项目中的情况) @Crossfit_and_Beer 我有点同意你的看法,但如果你的 gitignore 坏了,主要是你想要修复它而不是继续添加每个单独的文件或在使用时从缓存中删除每个文件不方便破碎的 gitignore。 git status 也是你的朋友,只是为了仔细检查。 或者你可以使用git add .确保你包含.【参考方案3】:

请遵循此流程

首先安装 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

我想我们已经完成了

【讨论】:

这解决了我的问题,我使用git reset --hard master 来重置我的“扭曲进度”,并执行此解决方案,它奏效了。谢谢!!【参考方案4】:

按照所有步骤操作。

第一步:初始化git

$ git init

第 2 步: 检查文件是否存在。

$git ls

第 3 步: 添加文件

$git add filename

第 4 步: 添加评论以显示

$git commit -m "your comment"

第 5 步: 链接到您的存储库

$git remote add origin  "copy repository link  and paste here"

第 6 步: 推送 Git

$ git push -u origin master

【讨论】:

【参考方案5】:

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

git add . 会将您的所有文件暂存到当前子文件夹下。

【讨论】:

【参考方案6】:

如果有人只关心错误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?上的答案

您在这里找到至少 2 个适合该问题的候选者:您要么在子文件夹中,要么在父文件夹中,但不在实际的 repo 文件夹中。如果您在目录中的级别太高,这肯定会引发消息“没有添加到提交......”,有关详细信息,请参阅我在链接中的答案。我不知道当您在子文件夹中时是否会出现相同的消息,但很有可能。这可能符合你的解释。

【讨论】:

以上是关于Git:没有添加到提交但存在未跟踪的文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Git 检查脏索引或未跟踪文件

用于一次性添加(不提交)所有新文件的 Git 命令 [重复]

如何在 Git 上添加未跟踪的文件?

Git 状态 和 查看历史提交

Git添加所有修改,删除和未跟踪的文件?

Git中添加但未提交的已删除文件可以恢复吗? [复制]