因此,我在.gitignore文件中添加了一个文件夹。

一旦我做一个git status就会告诉我

# On branch latest
nothing to commit (working directory clean)

但是,当我尝试更改分支时,我得到以下信息:

My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:public/system/images/9/thumb/red-stripe.jpgpublic/system/images/9/original/red-stripe.jpgpublic/system/images/8/thumb/red-stripe-red.jpgpublic/system/images/8/original/red-stripe-red.jpgpublic/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpgpublic/system/images/7/thumb/red-stripe-dark.jpgpublic/system/images/7/original/red-stripe-dark.jpgpublic/system/images/7/original/DSC07833.JPGpublic/system/images/6/thumb/red-stripe-bw.jpgpublic/system/images/6/original/website-logo.pngpublic/system/images/6/original/red-stripe-bw.jpgpublic/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpgpublic/system/images/5/original/logocompv-colored-squares-100px.pngpublic/system/images/5/original/Guy_Waving_Jamaican_Flag.jpgpublic/system/images/4/thumb/DSC_0001.JPGpublic/system/images/4/original/logo.pngpublic/system/images/4/original/DSC_0001.JPGpublic/system/images/4/original/2-up.jpgpublic/system/images/3/thumb/logo2.gifpublic/system/images/3/original/logo2.gifpublic/system/images/3/original/Guy_Waving_Jamaican_Flag.jpgpublic/system/images/3/original/11002000962.jpgpublic/system/images/2/thumb/Profile Pic.jpgpublic/system/images/2/original/Profile Pic.jpgpublic/system/images/2/original/02 Login Screen.jpgpublic/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting

这是我的.gitignore文件的样子:

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*

我如何才能正常工作,以便可以在不删除那些文件的情况下切换分支?

如果我进行更改,会影响那些文件吗? 换句话说,如果我此后回到该分支,那么就我最近的提交而言,一切都将是完美的吗?

我不想丢失这些文件,只是不想跟踪它们。


#1楼

在我的情况下git rm --cached无法正常工作。 但是我用git rebase得到了它


#2楼

不幸的是, git rm --cachedgit clean -d -fx ""都不对我git clean -d -fx ""

我的解决方案最终是将分支推送到远程,克隆了一个新的存储库,然后在新的存储库中进行了合并。 其他访问回购协议的人也必须这样做。

故事的寓意:从一开始就使用.gitignore文件。


#3楼

警告:这将删除未建立索引的本地文件

强迫它: git checkout -f another-branch


#4楼

如果您使用的是OS X,则可能是因为文件名的某些字符更改了大小写。 尝试设置以下配置选项:

git config core.ignorecase true

#5楼

Windows 8系统上,这是我在命令提示符下使用Git发生的。 我团队的其余成员使用TFS ,而我使用Microsoft的git-tf在TFS和本地Git存储库之间进行推/拉。

由于某些文件只是为了更改大小写而被重命名,因此出现了问题。 发生的事情似乎是这样的:

  • 这些文件的名称以混合大小写形式签入。
  • 在以后的提交中,文件名更改为全部小写。
  • git-tf最初使用大小写混合的文件。
  • 当文件重命名为小写字母时,git-tf没有得到文件,因为在Windows 8中这些文件名是等效的。
  • 由于Git区分大小写,因此它抱怨我的混合大小写文件不在源代码管理中。 但是使用git status ,我看不到任何更改,因为在Windows命令提示符下,这些文件名是等效的。

对我来说最简单的解决方案是:

  • git checkout项目的先前版本早于添加这些文件
  • 然后git checkout用正确的文件大小写git checkout项目的最新版本

#6楼

就我而言,我看到此错误是因为我正在使用流行的开源CMS,而引起问题的目录是CMS写入的上载目录。

所以说的是有些文件没有,但是您无法从版本控制中获取。

我要从实时站点抓取所有文件到本地,然后将其检入到存储库中,以期解决此问题。


#7楼

这可能是权限问题,

更改所有权,

sudo chown -v -R usr-name:group-name folder-name

#8楼

我也遇到了类似的问题,我尝试了上面发布的所有解决方案,但没有用

当我在develop分支onMusicUpdateListener.java OnMusicUpdateListener.java 重命名为 onMusicUpdateListener.java时,导致了此问题。

现在, master拥有onMusicUpdateListener.java并且develop拥有与OnMusicUpdateListener.java相同的文件

现在,每当我转为精通时,都会给我一个错误

The following untracked working tree files would be overwritten by checkout

然后它aborted

为了解决这个问题,我强行checked out master分支,然后改名为我onMusicUpdateListener.javaOnMusicUpdateListener.javacommitted它,然后merged与它develop分支。

然后,我通过mergingmergingmaster更新了我的develop分支,现在一切恢复正常,问题得到解决。


#9楼

appname / gen /中删除.gitignore文件以解决此问题。


#10楼

如果要快速解决此问题,可以使用以下命令:

git checkout -f dev

#11楼

有一个命令可以完成这项微妙的任务(永久删除未跟踪的文件)

git clean -i

然后git pull就可以了。


#12楼

2个名称相同但大小写不同的文件可能是问题所在。

您可以删除这些文件中的一个或重命名。 例如:

Pdf.html.twig (The GOOD one)pdf.html.twig (The one I deleted)

#13楼

这两个函数(git rm --cached,git checkout -f another-branch)对我不起作用。

取而代之的是,我按照Git的指示实际删除了文件(在Eclipse中)。 请先移动或移除它们,然后才能切换分支。

然后我添加/提交了它。

然后我拉开了,它起作用了!


#14楼

移动文件,而不是删除

避免删除文件的一种方法是移动文件。 例如:

cd "`git rev-parse --show-toplevel`"
git checkout 2>&1 | while read f; do [ ! -e "$f" ] || mv "$f" "$f".bak; done

#15楼

如果您已在本地重命名文件然后执行pull ,它将显示该错误消息。


#16楼

我只是去了文件系统并直接删除了文件,然后继续进行git checkout并成功了。

我已经多次发生该问题,它可能与开发人员执行删除,推送,重新添加,推送或类似操作有关。


#17楼

这很容易解决,git表示两个分支中都有相同的文件,因此您必须从master分支中删除特定文件,然后才能合并:

git merge“您的分支”

希望它对您有用,我刚刚解决了我的错误。 我的错误是:

错误:合并后,以下未跟踪的工作树文件将被覆盖:.vs / slnx.sqlite请在合并之前移动或删除它们。 堕胎

现在正在工作! 在我的情况下,.vs / slnx.sqlite由Visual Studio生成,我需要先关闭它,然后再删除它。


#18楼

这对我有用。

 1. git fetch --all2. git reset --hard origin/{branch_name}

#19楼

就我而言,问题出在子模块上。 master已与另一个分支合并,该分支向项目添加了新的子模块。 我尝试签出的分支没有该分支,这就是git抱怨未跟踪文件的原因,而其他建议的解决方案都对我无效。 我强迫结帐到我的新分支,并拉了主人。

  • git checkout -f my_branch
  • git pull origin master
  • git submodule update --init

#20楼

Git告诉您它想要创建文件(名为public/system/images/9/...等),但是您已经在该目录中拥有了Git 不会跟踪的现有文件。 也许有人将这些文件添加到Git存储库,这是您第一次切换到该分支吗?

这些文件可能在您的develop分支中而不在当前分支中的原因。 您可能必须问您的合作者为什么。

我该如何工作,以便我可以切换分支而不删除那些文件?

如果不以某种方式使文件消失,就无法做到。 您现在可以将public重命名为my_public或其他名称。

如果之后我回到该分支机构,那么到我最近提交时,一切都将是完美的吗?

如果您提交更改,Git不会丢失它们。 如果您不提交更改,那么Git将尽力覆盖已完成的工作。 这就是Git在这里首先警告您的内容(当您尝试切换分支时)。


#21楼

似乎您想忽略这些文件,但是它们已经被提交。 .gitignore对存储库中已存在的文件没有影响,因此需要使用git rm --cached删除它们。 --cached将阻止它对您的工作副本产生任何影响,并且在您下次提交时将其标记为已删除。 从存储库中删除文件后,.gitignore将阻止它们再次添加。

但是,您的.gitignore遇到另一个问题,您过多地使用了通配符,导致通配符的匹配程度低于预期。 相反,让我们更改.gitignore并尝试一下。

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/

#22楼

对于那些需要比斯科特·舍弗(Scott Schafer)的答案影响深远的人 ,

git clean -f

可能会工作。 我强烈建议跑步

git clean --dry-run

第一。 如果您运行git clean -f ,该命令将输出Git将删除的文件列表,这可能会为您避免无意中删除不需要的文件带来的麻烦。

有关git clean更多信息,请参见Stack Oveflow答案或文档 。


#23楼

大多数答案都考虑删除或删除文件,这是简单的方法。 但是有时候您不想摆脱本地文件。 但是合并策略,因此git也有解决方案;

git merge --strategy=ours master

#24楼

只需删除文件或重命名它们即可。

例如

$ git pull
Enter passphrase for key '/c/Users/PC983/.ssh/id_rsa':
error: Your local changes to the following files would be overwritten by merge:ajax/productPrice.php
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:ajax/product.php
Please move or remove them before you merge.
Aborting
Updating a04cbe7a..6aa8ead5

我必须重命名/删除ajax / product.phpajax / produtPrice.php

不用担心,git pull会把它们带回来。 我建议您重命名它们而不是删除它们,因为您可能会丢失一些更改。

如果这样做没有帮助,那么您必须删除整个Branch并再次创建它,然后执行git pull origin remotebranch


#25楼

为了保存修改后的文件并在以后使用修改后的内容。 我在尝试签出分支以及尝试重新设置基准时发现了此错误。 尝试Git隐藏

git stash


#26楼

检查是否有带有“ /”或任何特殊符号的文件夹名称,然后重命名该文件夹。 然后,您只需将存储库克隆到另一个位置。


#27楼

一个简单的解决方案可能是:只需确保您在GitBash中的正确工作目录中GitBash 。 如果用户尝试将目录合并到其文件夹层次结构中太高的目录,则几乎每次都会出现该消息。

例:

/workspace/git/myBashSourceFolder/myProjectSourcefolder

场景:用户在git-folder克隆了仓库,他在Eclipse中创建了一个新的Java项目,并导入了克隆的仓库。 Eclipse在其本地项目中将myProjectSourceFolder设置为Source Folder。 因此,用户使用git bash输入了它,然后从那里推,拉并提交了他的项目。 git因此同步myProjectSourceFolder但在其历史记录中没有myProjectSourceFolder记录。 因此,如果用户下次尝试从那里进行同步,则myBashSourceFolder的push / pull / merge将产生给定的输出,而不是以前工作的文件夹。

解决方案:输入正确的文件夹,然后再次尝试拉。 在几乎每次遇到的情况下,此解决方案都很好:)


#28楼

警告:它将删除未跟踪的文件,因此对于提出的问题不是一个很好的答案。

我也打了这个信息。 就我而言,我不想保留文件,因此这对我有用:

git 2.11及更高版本

git clean  -d  -f .

较旧的git

git clean  -d  -f ""

如果您还想删除git忽略的文件,请执行以下命令。

被警告!!! 仅当您知道自己正在做的事情100%时,才可能破坏您的项目

git 2.11及更高版本

git clean  -d  -fx .

较旧的git

git clean  -d  -fx ""

http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

  • -x表示也会删除忽略的文件以及git未知的文件。

  • -d表示除去未跟踪的文件之外,还删除未跟踪的目录。

  • 需要-f来强制它运行。


#29楼

基于较早的提交签出到分支时,我遇到了同样的问题。 Git由于未跟踪文件而拒绝检出。

我已经找到了解决方案,希望对您有帮助。

将受影响的目录添加到.gitignore并在它们上发出$ git rm -r --cached显然是不够的。

假设您想基于较早的提交K创建分支,以测试某些内容并返回到当前版本。 我会按照以下步骤进行操作:

  1. 设置未跟踪的文件:编辑.gitignore并将$ git rm -r --cached到您希望git忽略的文件和目录上。 还将文件.gitignore本身添加到.gitignore ,不要忘记发出$ git rm -r --cached .gitignore 。 这将确保git的ignore行为在早期的提交中保持不变。

  2. 提交刚才所做的更改:

    $ git add -A
    $ git commit

  3. 保存当前日志,否则返回到当前版本时可能会遇到问题

    $ git log > ../git.log

  4. 硬重置为提交K

    $ git reset --hard version_k

  5. 根据提交K创建分支

    $ git branch commit_k_branch

  6. 结帐到该分支

    $ git checkout commit_k_branch

  7. 做你的东西并提交

  8. 再次结帐回主人

    $ git checkout master

  9. 再次重置为当前版本

    $ git reset current_version$ git reset ORIG_HEAD

  10. 现在您可以重设HEAD

    git reset --hard HEAD

注意! 不要跳过倒数第二个步骤(例如$ git reset --hard ORIG_HEAD ),否则上面抱怨的未跟踪文件git将会丢失。

我还确保git抱怨的文件没有被删除。 我将它们复制到一个文本文件中,并$ for i in $(cat ../test.txt); do ls -ahl $i; done发出命令$ for i in $(cat ../test.txt); do ls -ahl $i; done $ for i in $(cat ../test.txt); do ls -ahl $i; done

如果再次结帐到上述分支,请不要忘记发出$ git status以确保不会出现不需要的更改。

.gitignore和“以下未跟踪的工作树文件将被签出覆盖”相关推荐

  1. brew update:以下未跟踪的工作树文件将被合并覆盖:

    本文翻译自:brew update: The following untracked working tree files would be overwritten by merge: I tried ...

  2. 如何从当前Git工作树中删除本地(未跟踪)文件

    如何从当前工作树中删除未跟踪的本地文件? #1楼 如果未跟踪的目录是它自己的git存储库(例如,子模块),则需要使用-f两次: git clean -d -f -f #2楼 如果需要从特定子目录中删除 ...

  3. 当前分支上有未提交的更改时签出另一个分支

    本文翻译自:Checkout another branch when there are uncommitted changes on the current branch Most of the t ...

  4. Git - ‘假设未改变‘和‘跳过工作树‘之间的区别

    本文翻译自:Git - Difference Between 'assume-unchanged' and 'skip-worktree' I have local changes to a file ...

  5. 在Git中,HEAD,工作树和索引之间有什么区别?

    有人能告诉我在Git中HEAD,工作树和索引之间的区别吗? 据我所知,它们都是不同分支的名称. 我的假设是否正确? 编辑 我找到了这个 单个git存储库可以跟踪任意数量的分支,但是您的工作树只与其中一 ...

  6. Git 2.5增加了工作树、改进了三角工作流、性能等诸多方面

    Git2.5是一个重要的功能版本,其中包括了worktrees.改进过的triangular workflows.更好的性能,以及无数的改进和修复. \\ 工作树(Worktrees) \\ 工作树是 ...

  7. 解决vscode在拉取代码报错:在签出前,晴清理存储库工作树。

    vscode git 拉取远程代码时,提示:在签出前,请清理存储库工作树 解决: 1.把当前未提交的修改暂存起来,让仓库还原到最后一次提交的状态 git stash 2.拉取远程仓库的代码,让你现在的 ...

  8. Git常用操作(清除工作区未跟踪文件、保存和恢复进度、打标签)

    git clean 清除工作区未跟踪文件 git clean 命令去除冗余文件或者清理工作目录 git clean -f -d 移除工作目录中所有未追踪的文件以及空的子目录.(-f强制删除) git ...

  9. git 添加未跟踪的文件

    问题描述: 在多个目录下新增了很多文件,但git add时出现大量的文件未跟踪:git push时这些文件并不会被更新到远程库,这是为什么呢? 对比思维: 通过对比发现这次提交和以前有什么不同呢? 1 ...

最新文章

  1. 批量mergeinto
  2. [bzoj2506] calc
  3. spring boot四:探究hello world
  4. 大势至电脑文件防泄密软件_有了数据防泄密软件,还会担心企业文件泄漏吗?...
  5. win7-elasticsearch环境搭建
  6. python文本聚类 词云图_文本挖掘:避孕药主题情感分析
  7. JS将Date加八小时
  8. C#自学总结_Day2
  9. 电商商城小程序项目完整源码(微信小程序)
  10. VSCode git工具
  11. 90后程序员程广坤教你零基础自学编程,用这6种方法就够了!
  12. 开源项目之Android Secrets(密码箱)
  13. 【ROS小车9】仅用 RPLIDAR A1(思岚 A1) 雷达在 Ubuntu 虚拟机跑 gmapping
  14. 软硬件全开源,航芯方案分享 | 热敏打印机方案
  15. mysql的sock文件_如何查找 mysql 的mysql.sock文件?
  16. 湖南任务书 数据库服务渗透测试
  17. 物联网的体系结构和关键技术
  18. 微信扫二维码挪车小程序开发制作功能
  19. Codeforces1457 C. Bouncing Ball(思维+dp)
  20. 被哈佛录取后,他骑行4300公里旅行回家

热门文章

  1. Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解...
  2. 配置sqlplus的AUTOTRACE
  3. 应网友邀请参加了2011年度51CTO的IT博客大赛
  4. SQLServer DBA 三十问之我答(第7题)
  5. 手机应用开发者必看:移动开发者大势图
  6. layui的tree实现 struts 2+layui+jsp
  7. 《深入理解Linux内核》 读书笔记
  8. An Implemention of Realtime Gobal Illumination
  9. [LOJ 6485]LJJ 学二项式定理
  10. linux tomcat/bin/shutdown.sh 关闭不了