.gitignore 和“以下未跟踪的工作树文件将被结帐覆盖”

Posted

技术标签:

【中文标题】.gitignore 和“以下未跟踪的工作树文件将被结帐覆盖”【英文标题】:.gitignore and "The following untracked working tree files would be overwritten by checkout" 【发布时间】:2011-06-18 23:40:48 【问题描述】:

所以我在我的 .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.jpg
    public/system/images/9/original/red-stripe.jpg
    public/system/images/8/thumb/red-stripe-red.jpg
    public/system/images/8/original/red-stripe-red.jpg
    public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
    public/system/images/7/thumb/red-stripe-dark.jpg
    public/system/images/7/original/red-stripe-dark.jpg
    public/system/images/7/original/DSC07833.JPG
    public/system/images/6/thumb/red-stripe-bw.jpg
    public/system/images/6/original/website-logo.png
    public/system/images/6/original/red-stripe-bw.jpg
    public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/5/original/logocompv-colored-squares-100px.png
    public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/4/thumb/DSC_0001.JPG
    public/system/images/4/original/logo.png
    public/system/images/4/original/DSC_0001.JPG
    public/system/images/4/original/2-up.jpg
    public/system/images/3/thumb/logo2.gif
    public/system/images/3/original/logo2.gif
    public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/3/original/11002000962.jpg
    public/system/images/2/thumb/Profile Pic.jpg
    public/system/images/2/original/Profile Pic.jpg
    public/system/images/2/original/02 Login Screen.jpg
    public/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/*

如何让这个工作,以便我可以在不删除这些文件的情况下切换分支?

如果我进行更改,会影响这些文件吗?换句话说,如果我之后回到这个分支,直到我最近一次提交,一切都会完美吗?

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

【问题讨论】:

如果你真的不关心这些文件: git checkout -f 在我的情况下,文件是在构建过程中生成的,所以我可以不在乎 如果你执行“git checkout”(没有分支名称),有时会发生。要修复,请执行 'git checkout branchname' 一个单独的,但非常相关的问题:为什么会发生这个错误?为什么git不能在分支之间切换? @ahnbizcad 因为如果你正在处理一个新文件,而另一个分支上的某个人碰巧提交了一个同名文件,那么当你切换分支时,如果 git 破坏了你的版本,你会很生气。这就是存在 -f 标志的原因。 【参考方案1】:

在我的情况下,问题是由于文件名从 subscribe.ts 更改为 Subscribe.ts

所以我检查了我的分支 dev 是否与我所在的当前分支 main 保持同步。

(当前分支ma​​in

    git merge dev

    > 已经是最新的

    git branch -d dev

    git checkout -b dev

【讨论】:

以上是关于.gitignore 和“以下未跟踪的工作树文件将被结帐覆盖”的主要内容,如果未能解决你的问题,请参考以下文章

`git rebase -i` 错误:以下未跟踪的工作树文件将被结帐覆盖:

gitignore 只是不起作用。我无法让它忽略 .DS_Store 和 .gitignore 文件

gitignore入门

.gitignore 和 .gitkeep 有啥区别?

Git 中.gitignore 使用和.gitignore 无效的解决方法

如何移除 gitignore文件