本地分支在没有明显原因的情况下显示未暂存的更改和未跟踪的文件[重复]

Posted

技术标签:

【中文标题】本地分支在没有明显原因的情况下显示未暂存的更改和未跟踪的文件[重复]【英文标题】:Local branch shows unstaged changes and untracked files without apparent reason [duplicate] 【发布时间】:2021-05-27 03:43:20 【问题描述】:

最近开始做一个大项目,刚刚克隆了仓库,主分支叫dev,所有的pull请求都合并到那个分支。

我没有在 repo 上做任何工作,但由于某种原因,当我做 git status 时,它显示出我不知道的变化。我这样做是为了清理我的 git 状态:

git add . && git reset --hard HEAD

这样我只需删除所有神奇出现的本地更改,并确保我的dev 分支是最新的远程我只需创建一个git pull

但是这种情况反复发生,所以这变得很烦人。今天我检查了一些未暂存的更改,并查看远程dev 分支,我可以看到这些更改是今天提交的。我认为由于某种原因,git 正在将 dev 分支与我的本地 dev 分支同步,并将更改显示为本地更改。

知道为什么会发生这种情况吗?

【问题讨论】:

@TTT 正确,这正是正在发生的事情。拉动后我将开发分支保持干净。然后我做其他事情(在另一个项目或其他事情上工作),几个小时后我回到 repo 并做一个 git status 并查看我没有做的更改。 您的存储库是否在 Dropbox 或 Google Drive 等共享驱动器上? “我已经集成了 iCloud”:本地 git 存储库的文件夹是否与 iCloud 同步? @svelandiag : 然后从同步中删除你的 repo,看看它是否仍然发生 @LeGEC 我认为你是对的。 Apparently iCloud and Git don't play nice. 【参考方案1】:

发生这种情况的原因是您看到了从 IDE 自动生成的文件。

这是很正常的。您需要做的只是将这些文件添加到 .gitignore 和 git add .gitignore && git commit -m "Update gitignore" 如果您有权限,请在 dev 上。

如果你没有权限,创建一个分支:

git checkout -b gitignore

将自动生成的文件添加到 .gitignore 并提交这些更改

git add .gitignore && git commit -m "Update .gitignore"

从 dev 创建另一个功能分支后,只需转到该功能分支并

git merge gitignore

但是,请注意,上述解决方案仅适用于尚未跟踪的文件。如果像您一样通过暂存文件来跟踪您的文件,那么:

将每个文件添加到.gitignore后,你需要做的是:

git update-index --assume-unchanged <file>

否则,.gitignore 将无法在这些文件被跟踪后忽略它们。

【讨论】:

我认为这与问题的描述不符:“有一些未暂存的更改,查看远程开发分支,我可以看到这些更改是今天提交的。”

以上是关于本地分支在没有明显原因的情况下显示未暂存的更改和未跟踪的文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

6.查看已暂存和未暂存的修改

Git stash uncached:如何存放所有未暂存的更改?

git checkout 将未暂存的文件带到新分支

放弃Git中未暂存的更改

git常用操作合集

提交后将 git 存储库和工作目录复制到另一个位置,在检查状态时给出“未暂存的更改”