所以我在。gitignore文件中添加了一个文件夹。

一旦我输入git状态,它就会告诉我

# 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/*

我如何让这个工作,所以我可以切换分支而不删除这些文件?

如果我做了更改,会影响那些文件吗?换句话说,如果我之后回到这个分支,在我最近一次提交之前,一切都是完美的吗?

我不想弄丢那些文件,我只是不想让他们被追踪到。


当前回答

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

其他回答

在我的例子中,我看到这个错误是因为我使用的是一个流行的开源CMS,导致问题的目录是CMS写入的上传目录。

它说的是有些文件你没有,但你不能从版本控制中获得。

我抓取所有的文件从现场到我的本地,然后我会检查这到回购,希望这解决了问题。

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

git merge --strategy=ours master 

这个命令解决了我的问题:

git add * 
git stash
git pull

我也面临着类似的问题,我尝试了上面发布的所有解决方案,但都不起作用

当我在开发分支中将我的onmusicupdatelister .java重命名为onmusicupdatelister .java时,导致了这个问题。

master有onmusicupdatelister .java 和develop有和onmusicupdatelister .java相同的文件

现在,每当我切换到master,它就会给我一个错误

The following untracked working tree files would be overwritten by checkout

然后它中止了。

为了解决这个问题,我强制检查了主分支 然后将我的onmusicupdatelister .java重命名为onmusicupdatelister .java,提交它,然后将其合并到开发分支。

然后我更新了我的开发分支合并到主,现在一切恢复正常,问题解决了。

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

如。

$ 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.php和ajax/ productprice .php。

别担心,少壮派会把他们拉回来的。我建议您重命名它们,而不是删除它们,因为您可能会失去一些更改。

如果这没有帮助,那么你必须删除整个分支并重新创建它,然后执行git pull origin remotebranch