远程更新了本地忽略的文件;现在无法结账到远程分支机构

时间:2014-03-01 13:15:02

标签: git gitignore git-checkout

考虑以下情况:

我的.gitignore中有以下内容:

files/dependency/config.lua

但是由于该文件在将其添加到gitignore之前已经存在,因此它正在被跟踪。我更新了索引并手动删除了文件following this question。现在,我的一位同事在远程服务器上更新了这个文件。

当我尝试结帐到远程分支时,它会显示:

  

错误:您对以下文件的本地更改将被覆盖   通过结帐:

files/dependency/config.lua
     

请在更改分支之前提交更改或存储更改。

     

中止

所以,我读到了它;我找到的大部分答案都告诉你使用git stash。由于我没有对本地存储库进行任何更改,因此我无法存储它们。

我使用--force选项结帐,但它也会返回错误:

git checkout --force -B myBranch remote/branchname
error: Entry 'files/dependency/config.lua' not uptodate. Cannot merge.

在这里,我粘贴了我的终端:

┌─[hjpotter92:HEDWIG]─[fooDir]─[06:46 PM] (master u=)
└──$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean
┌─[hjpotter92:HEDWIG]─[fooDir]─[06:39 PM] (master u=)
└──$ git checkout -b myBranch remote/branchname
error: Your local changes to the following files would be overwritten by checkout:
        files/dependency/config.lua
Please, commit your changes or stash them before you can switch branches.
Aborting
┌─[×]─[hjpotter92:HEDWIG]─[fooDir]─[06:39 PM] (master u=)
└──$ git stash
No local changes to save
┌─[hjpotter92:HEDWIG]─[fooDir]─[06:39 PM] (master u=)
└──$ git checkout -b myBranch remote/branchname
error: Your local changes to the following files would be overwritten by checkout:
        files/dependency/config.lua
Please, commit your changes or stash them before you can switch branches.
Aborting
┌─[×]─[hjpotter92:HEDWIG]─[fooDir]─[06:39 PM] (master u=)
└──$ git checkout --force -b myBranch remote/branchname
error: Entry 'files/dependency/config.lua' not uptodate. Cannot merge.

问题:

有没有办法检查远程分支,然后在有人提取我的更改或类似内容时强制忽略文件files/dependency/config.lua

2 个答案:

答案 0 :(得分:4)

我目前通过再次索引被忽略的文件使其成功。我用了命令:

git update-index --no-assume-unchanged files/dependency/config.lua

然后轻松正确地执行checkout命令。我会在此留下这个答案。如果有人能回答以下问题,我将不胜感激:

  

有没有办法检查远程分支然后强行   每当有人拉扯时忽略文件files/dependency/config.lua   在我的变化或类似的东西?

答案 1 :(得分:1)

回应您之前提出的问题:

检查git status是否显示files/dependency/config.lua已修改。

然后您需要按照以下步骤操作:

  1. 将文件添加到gitignore。我想你已经覆盖了这个。
  2. git rm --cached files/dependency/config.lua
  3. commit此更改。
  4. 相关:Remove an Existing File from a Git Repo