git 添加 .也添加了其他项目的更改

git add . adds changes of other projects too

我正在尝试使用 git add . 将所有更改的文件添加到 GitHub,但它也会添加我对其他本地项目所做的更改。理想情况下,它应该添加同一项目的更改。

应该怎么解决?

当我 运行 git status 时,我会看到那些额外的文件 unstaged。 图片:

每个 repo 都在自己的目录中。然后当你 cd myproject 和 运行 git add . 它应该只添加在这个 repo 中更改的文件。

对于项目,如果您指的是同一存储库中的不同文件目录,那么您应该使用以下命令之一来满足您的需求

对于Git版本2.x


  • git add -A 个阶段 全部

  • git add . 阶段新增和修改,未删除

  • git add -u阶段修改删除,无新增


详情:

git add -A 等同于 git add .; git add -u.

关于 git add . 的重要一点是,它会查看工作树并将所有这些路径添加到暂存更改中(如果它们已更改或者是新的且未被忽略),它不会暂存任何 'rm' 动作。

git add -u 查看所有 已经 跟踪的文件,如果这些文件不同或已被删除,则暂存对这些文件的更改。它不会添加任何新文件,只会暂存对已跟踪文件的更改。

git add -A 是执行这两项操作的便捷快捷方式。

你可以用这样的东西来测试差异(请注意,对于 Git 版本 2.x 你的 git add . git status 的输出将 不同):

git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial

echo OK >> change-me
rm delete-me
echo Add me > add-me

git status
# Changed but not updated:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git add .
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
# Changed but not updated:
#   deleted:    delete-me

git reset

git add -u
git status

# Changes to be committed:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git reset

git add -A
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
#   deleted:    delete-me

根据您提供的图像,您似乎应该在 Silencio 目录中。 Git 显示您有未跟踪的文件。

试试这个:

cd ~/Silencio
git status

输出将显示该目录只有更改。

我查看了您上传的图片,您的 git 设置似乎很奇怪。

我看到你在文件夹里,~/AndroidStudioProjects/ApiExample/。所以这是你的项目目录?

但看起来你已经在你的主目录中初始化了一个 git 存储库(即 ~/),当你在当前路径中 运行 git status 时,它显示与该主目录路径相关的所有内容。

在我看来,您不应该那样做,并且应该为每个项目维护一个单独且独立的 git 存储库。

我建议解决您的问题是从您的主页中删除 .git 目录。我猜你的主目录的根目录中没有任何有效的项目?

  1. 首先将您的路径更改为主目录:

    cd ~

  2. 然后备份您的 .git 文件夹以备不时之需。

    cp -r .git .git-backup

  3. 然后删除它。

    rm -rf .git

  4. 现在回到您的 AndroidStudioProjects,那里也不应该有一个 git 存储库。

    cd AndroidStudioProjects

  5. 删除 .git 文件夹。

    rm -rf .git

  6. 最后,转到您的 ApiExample 项目文件夹,并在那里初始化一个新的 git 存储库。

    git init

现在一切都应该没问题了。但是您应该知道,这只是一个清理混乱的建议。如果您的主目录或 AndroidStudioProjects 目录中确实有一个有效的 git 存储库,那么您需要使用 Git Submodules.

希望对您有所帮助。如有任何疑问,请随时提出。