忽略本地更改并切换分支

时间:2015-05-22 07:01:06

标签: git

我有一个App.config文件在本地修改但我不想提交更改:

On branch test
Your branch is up-to-date with 'origin/test'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   Test/App.config

no changes added to commit (use "git add" and/or "git commit -a")

所以根据another related question我执行了以下命令:

git update-index --assume-unchanged Test/App.config

以便git status给出以下输出:

On branch test
Your branch is up-to-date with 'origin/test'.

nothing to commit, working directory clean

一切似乎都很好,除非我尝试切换到另一个分支。我执行git checkout test2时的输出:

error: Your local changes to the following files would be overwritten by checkout:
        Test/App.Config

我的问题是,有没有办法在保留本地修改的文件的同时切换分支?或者git stash是唯一的解决方案吗?

2 个答案:

答案 0 :(得分:1)

您的问题是文件App.config 已在其他分支中修改

因为文件已被修改,你必须告诉git如何处理这个问题(提交或存储)。

使用git ignore可能是另一种解决方案吗?

答案 1 :(得分:1)

Git假定文件未更改,因此不会在git状态中显示它。

作为一个好的scm工具,git必须确保你没有加入松散的变化。如果切换到另一个分支,将覆盖文件Test/App.config。这就是为什么git拒绝结账并告诉你有变化的原因。

我建议不要使用assume unchanged。而是隐藏本地更改,签出另一个分支并弹出存储。

为了修复您的回购,您应该

 git update-index --no-assume-unchanged Test/App.config
 git stash
 git checkout test2
 git stash pop