Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Can';是否因为被忽略的文件具有本地更改而无法签出到其他分支?_Git - Fatal编程技术网

Git Can';是否因为被忽略的文件具有本地更改而无法签出到其他分支?

Git Can';是否因为被忽略的文件具有本地更改而无法签出到其他分支?,git,Git,我得到: 但是.idea/已经在我的.gitignore中了。如果我做了git status,也不会显示任何更改 请给我一些建议 更新: 谢谢你的建议。我希望我能去mybranch查看,但我不能,因为它不允许我切换!如果忽略.idea/(它们是IDE中的项目配置文件)是正确的行为,我现在应该怎么做? 我的目标是转到mybranch并将其与master合并。您可以将mybranch视为生产分支,将master视为开发分支。现在我想更新prod,因为master足够稳定。.idea/位于当前分支的.

我得到:

但是
.idea/
已经在我的
.gitignore
中了。如果我做了
git status
,也不会显示任何更改

请给我一些建议

更新:

谢谢你的建议。我希望我能去
mybranch
查看,但我不能,因为它不允许我切换!如果忽略
.idea/
(它们是IDE中的项目配置文件)是正确的行为,我现在应该怎么做?
我的目标是转到
mybranch
并将其与
master
合并。您可以将
mybranch
视为生产分支,将master视为开发分支。现在我想更新prod,因为master足够稳定。

.idea/
位于当前分支的
.gitignore
中。
git status
给出的数据与此一致。您确定
.idea/
mybranch
.gitignore
中吗

如果
mybranch
包含
.idea/workspace.xml
,则当您签出时,此文件将被覆盖,即使它当前已被忽略


编辑

您可以通过临时将
.idea/workspace.xml
移动到其他位置来绕过限制,例如,将其移动到
.idea/workspace.xml.old
。然后签出
mybranch
并查看发生了什么-在
.gitignore
中有什么,在
.idea/workspace.xml中有什么。一旦看到发生了什么,就可以轻松地将文件移回原位


或者,您可以尝试
git stash
,但在弄清楚发生了什么之前,避免增加额外的复杂性可能是明智的

检查您正在签出的分支机构的
.gitignore
中是否存在
.idea/
,以及您当前所在分支机构的
.gitignore>中是否存在


一种解决方案是将对
.idea/workspace.xml
文件所做的更改隐藏起来,签出到您的
mybranch
,然后将
.idea/
文件夹添加到
.gitignore
,切换回
主分支,然后应用隐藏的更改,然后合并两个分支。

关于原因,两个答案都是正确的。但是git隐藏不起作用,因为它不会隐藏对workspace.xml所做的被忽略的更改,或者workspace.xml已在树的其他地方更改


我所做的是git将repo克隆到其他地方,签出到mybranch,编辑gitignore,提交,然后从master合并。

在我的情况下,这是由于我以前的

$ git checkout mybranch
error: Your local changes to the following files would be overwritten by checkout:
        .idea/workspace.xml
Please, commit your changes or stash them before you can switch branches.
Aborting
git更新索引--假定未更改
在那个文件上有冲突。通过一个

git update-index --assume-unchanged <filename>
git更新索引——无假设不变
并提交由此产生的新状态,一切都已修复


更新:修复参数中的打字错误。

我收到了关于我没有更改的文件的相同消息:

$git结帐分行
错误:签出将覆盖您对以下文件的本地更改:
wwwroot/js/inctain/some-file.js
请在切换分支之前提交或隐藏更改。
流产

我可以签出任何其他分支机构,但签出thatbrach
没有问题。
我去了路径,做了
git status
,结果是它是最新的。 我做了
git-stash
,得到了一条消息,没有本地更改

最后,我做了每个软件工程师都做的事情:重新启动我的机器——这也没用

我再次转到该路径,删除了
一些文件.js
,并再次进行了签出-这次成功了。以防万一,我确实拉了验证一切都是好的和最新的


这解决了我的问题。

我在远程GitHub企业中也遇到了同样的问题。我转到GitHub web界面,创建了一个pull请求,将我的分支合并到master中。因为它没有我的本地workspace.xml更改,因为它们被忽略了,所以它允许拉取请求和合并。在合并和拉取之后,我能够在本地再次切换分支

git update-index --no-assume-unchanged <filename>