我有一个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
是唯一的解决方案吗?
答案 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