Git checkout未跟踪问题

时间:2015-12-16 17:47:22

标签: linux windows git git-bash

我在Drupal网站上与其他几个人合作,我们是控制Git的版本。我们设置了一个包含我们提交的本地Git存储库。

在一位同事推动了一些更新后,我获取并合并到我的本地开发分支中,我开始遇到以下问题:

user@server:/var/www/Intranet/sites/intranet/modules/custom$ git checkout dev 
error: The following untracked working tree files would be overwritten by checkout:
    themes/bigcompany/panels/layouts/radix_bryant_flipped/radix-bryant-flipped.png
    themes/bigcompany/panels/layouts/radix_bryant_flipped/radix-bryant-flipped.tpl.php
    themes/bigcompany/panels/layouts/radix_bryant_flipped/radix_bryant_flipped.inc
Please move or remove them before you can switch branches.
Aborting

上面的问题通常会在我尝试结帐到其他失败的分支时出现,并且我实际上被困在我当前的分支中。

参考this问题,有人建议我的问题与gitignore文件有关。但是,我的.gitignore文件没有任何内容表明我的主题目录的任何部分都应该被忽略,如下所示:

# .gitignore for a standard Drupal 7 build based in the sites subdirectory.

# Drupal
files
settings.php
settings.*.php

# Sass.
.sass-cache

# Composer
vendor/

# Migrate sourec files
modules/custom/haringeygovuk_migrate/source_data

如上所述,我尝试将git checkout执行到任何分支都失败,并显示上述消息。我决定用-f开关强制它,并成功切换到我的目标分支,但我丢失了几百行代码 - 我很乐意避免前进。

我在Linux-Ubuntu VirtualBox上工作,我的同事更喜欢在WAMP设置中工作,并使用Gi​​t Bash终端模拟器来执行Git命令。 环境差异是否会导致这些严重问题?

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

嗯,情况相当简单。您在当前的分支机构中,没有Git控制下的某些文件,但与此同时,您在工作树中拥有这些文件。您尝试切换到的分支包含这些文件,因此git需要覆盖工作树中的文件才能执行结帐。

为防止可能的数据丢失,Git停止切换分支的过程,并通知您应该在当前分支的单独提交中在Git的控制下添加这些文件,然后才执行切换,或者只是从git方式中删除这些文件。

可能你选择了第二种方式。一般来说,你应该"强迫"任何操作只有在你真正理解你正在做什么的时候才会有。