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
目录。我猜你的主目录的根目录中没有任何有效的项目?
首先将您的路径更改为主目录:
cd ~
然后备份您的 .git 文件夹以备不时之需。
cp -r .git .git-backup
然后删除它。
rm -rf .git
现在回到您的 AndroidStudioProjects
,那里也不应该有一个 git 存储库。
cd AndroidStudioProjects
删除 .git 文件夹。
rm -rf .git
最后,转到您的 ApiExample
项目文件夹,并在那里初始化一个新的 git 存储库。
git init
现在一切都应该没问题了。但是您应该知道,这只是一个清理混乱的建议。如果您的主目录或 AndroidStudioProjects
目录中确实有一个有效的 git 存储库,那么您需要使用 Git Submodules
.
希望对您有所帮助。如有任何疑问,请随时提出。
我正在尝试使用 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
目录。我猜你的主目录的根目录中没有任何有效的项目?
首先将您的路径更改为主目录:
cd ~
然后备份您的 .git 文件夹以备不时之需。
cp -r .git .git-backup
然后删除它。
rm -rf .git
现在回到您的
AndroidStudioProjects
,那里也不应该有一个 git 存储库。cd AndroidStudioProjects
删除 .git 文件夹。
rm -rf .git
最后,转到您的
ApiExample
项目文件夹,并在那里初始化一个新的 git 存储库。git init
现在一切都应该没问题了。但是您应该知道,这只是一个清理混乱的建议。如果您的主目录或 AndroidStudioProjects
目录中确实有一个有效的 git 存储库,那么您需要使用 Git Submodules
.
希望对您有所帮助。如有任何疑问,请随时提出。