我正在与其他一些人合作开发我们正在控制 Git 版本的 Drupal 网站。我们设置了一个包含我们的提交的本地 Git 存储库。
在一位同事推送了一些更新并且我获取并 merge 到我的本地开发分支后,我开始遇到以下问题:
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
当我尝试 checkout 到其他失败的分支并且我实际上被困在我当前的分支时,通常会出现上述问题。
引用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 命令。 环境差异是否会导致这些严重问题?
我该如何解决这个问题?
最佳答案
嗯,情况很简单。你,在你当前的分支中,没有某些文件在 Git 的控制之下,但同时,你在你的工作树中有那些文件。您尝试切换到的分支具有这些文件,因此 git 需要覆盖工作树中的文件才能执行 checkout 。
为了防止可能的数据丢失,Git 停止切换分支的过程并通知您应该在当前分支的单独提交中将这些文件添加到 Git 的控制下,然后才执行切换,或者干脆从 git 方式中删除这些文件。
您可能选择了第二种方式。通常,只有当您真正了解自己在做什么时,才应该“强制”执行任何操作。
关于linux - Git checkout 未跟踪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318765/