Visual Studio Git-无法忽略提交的文件和切换分支
我在视觉工作室与TFS合作,我有3个分支机构。在我们的回购协议中,每个分支机构都有2个带有配置文件的解决方案。这些配置文件已提交,需要保持提交状态。但是,在我的机器上,我需要更改配置文件以指向正确的数据库 我尝试了git update index--skip worktree App.config,但是当我转到切换分支时,我收到以下错误消息: 也有Visual Studio Git-无法忽略提交的文件和切换分支,git,visual-studio,tfs,Git,Visual Studio,Tfs,我在视觉工作室与TFS合作,我有3个分支机构。在我们的回购协议中,每个分支机构都有2个带有配置文件的解决方案。这些配置文件已提交,需要保持提交状态。但是,在我的机器上,我需要更改配置文件以指向正确的数据库 我尝试了git update index--skip worktree App.config,但是当我转到切换分支时,我收到以下错误消息: 也有 git rm --cached App.config 它创建.gitignore文件,提交后,App.config将从repo中删除,这是我不想
git rm --cached App.config
它创建.gitignore
文件,提交后,App.config将从repo中删除,这是我不想要的
我的目标是忽略对文件所做的更改,但将文件保留在在线git repo中。git更新索引--跳过工作树只会隐藏更改,使其不会显示在索引中,而不会使更改消失。如果您要切换分支,git需要能够更新配置文件,但您的本地更改会阻止它这样做(无论文件是否隐藏在索引中,这都是正确的)
这是我最近一直在使用的工作流:
仅为本地测试提交创建分支。我将其称为test
。在那里提交您的配置更改
像平常一样在当地分支机构工作。我称之为工作。在执行过程中提交一些小的更改(无论如何,这是一个很好的实践)
当您需要使用更新的配置文件运行测试时,请签出test
,并在work
上重新设置它的基础。(如果你经常这样做,你可以设置test
来跟踪work
来保存一些击键。)
一旦test
位于work
之上,您就可以git checkout test
使用修改后的配置,或者git checkout work
继续编码
准备发布更改时,rebase--interactive
将所有临时提交压缩为一个(或多个)正式更改。从work
推送,并将test
放在一边,直到您再次需要这些本地更改
git update index--skip worktree
只会隐藏索引中显示的更改,而不会使更改消失。如果您要切换分支,git需要能够更新配置文件,但您的本地更改会阻止它这样做(无论文件是否隐藏在索引中,这都是正确的)
这是我最近一直在使用的工作流:
仅为本地测试提交创建分支。我将其称为test
。在那里提交您的配置更改
像平常一样在当地分支机构工作。我称之为工作。在执行过程中提交一些小的更改(无论如何,这是一个很好的实践)
当您需要使用更新的配置文件运行测试时,请签出test
,并在work
上重新设置它的基础。(如果你经常这样做,你可以设置test
来跟踪work
来保存一些击键。)
一旦test
位于work
之上,您就可以git checkout test
使用修改后的配置,或者git checkout work
继续编码
准备发布更改时,rebase--interactive
将所有临时提交压缩为一个(或多个)正式更改。从work
推送,并将test
放在一边,直到您再次需要这些本地更改
我建议采用以下方法。让Git知道这些更改:
git update-index --no-skip-worktree EACH_CONFIG_FILE
git stash save "Save local conf"
隐藏这些更改:
git update-index --no-skip-worktree EACH_CONFIG_FILE
git stash save "Save local conf"
现在,您可以毫无问题地签出到其他分支,然后恢复本地更改:
git stash pop
您可以修复冲突(如果有),接受本地配置文件。
最后,再次更新索引以跳过这些文件。我建议采用以下方法。让Git知道这些更改:
git update-index --no-skip-worktree EACH_CONFIG_FILE
git stash save "Save local conf"
隐藏这些更改:
git update-index --no-skip-worktree EACH_CONFIG_FILE
git stash save "Save local conf"
现在,您可以毫无问题地签出到其他分支,然后恢复本地更改:
git stash pop
您可以修复冲突(如果有),接受本地配置文件。
最后,再次更新索引以跳过这些文件。在本地计算机上签出了哪个分支?您使用的是什么visual Studio?另外,您是否使用像GitExtensions这样的GUI?它们都已签出。VS 2017允许我通过下拉菜单在它们之间切换,并自动更新本地计算机上的文件。我有陆龟作为GUI,但我现在只使用VS哦,太棒了。因此,作为澄清,您从下拉列表中选择的文件是唯一已签出的文件,其余文件存在于本地,但尚未签出。您对这些分支所做的任何更改都不会自动联机。下拉列表用于切换分支,与单个文件无关。所有文件都存在于repo上,并且已经签出,因此我对本地文件所做的任何更改都将与repo不同,因此VisualStudio希望我将其暂存。所以我不能更改分支,执行上面的任何一个命令都会产生相同的错误。我想您可能会感到困惑,下拉菜单实际上是在磁盘上签出一个不同的分支,一次只签出一个。请参阅此页,在您的本地计算机上签出哪个分支?您使用的是什么visual Studio?另外,您是否使用像GitExtensions这样的GUI?它们都已签出。VS 2017允许我通过下拉菜单在它们之间切换,并自动更新本地计算机上的文件。我有陆龟作为GUI,但我现在只使用VS哦,太棒了。因此,作为澄清,您从下拉列表中选择的文件是唯一已签出的文件,其余文件存在于本地,但尚未签出。您对这些分支所做的任何更改都不会自动联机。下拉列表用于切换分支,与单个文件无关。所有文件都存在于