我在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设置中工作,并使用Git Bash终端模拟器来执行Git命令。 环境差异是否会导致这些严重问题?
如何解决此问题?
答案 0 :(得分:1)
嗯,情况相当简单。您在当前的分支机构中,没有Git控制下的某些文件,但与此同时,您在工作树中拥有这些文件。您尝试切换到的分支包含这些文件,因此git需要覆盖工作树中的文件才能执行结帐。
为防止可能的数据丢失,Git停止切换分支的过程,并通知您应该在当前分支的单独提交中在Git的控制下添加这些文件,然后才执行切换,或者只是从git方式中删除这些文件。
可能你选择了第二种方式。一般来说,你应该"强迫"任何操作只有在你真正理解你正在做什么的时候才会有。