Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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 rm——缓存和签出_Git - Fatal编程技术网

Git rm——缓存和签出

Git rm——缓存和签出,git,Git,我发布了以下命令 git rm --cached .idea 在我的develope分支上,因为我不想跟踪ide配置文件。文件已经从索引中删除,但它们仍然在文件系统中,这正是我最初的目标 现在,当我尝试签出另一个分支时,git失败了,因为它们仍然在另一个分支的索引中——这是意料之中的 但是,我需要从任何分支的索引中删除这些文件,因此如何才能对无法签出到的分支发出相同的git rm--cached命令?面对同样的情况,我倾向于这样做,直到所有branch\u文件所在的分支都消失 git reba

我发布了以下命令

git rm --cached .idea
在我的
develope
分支上,因为我不想跟踪ide配置文件。文件已经从索引中删除,但它们仍然在文件系统中,这正是我最初的目标

现在,当我尝试签出另一个分支时,git失败了,因为它们仍然在另一个分支的索引中——这是意料之中的


但是,我需要从任何分支的索引中删除这些文件,因此如何才能对无法签出到的分支发出相同的
git rm--cached
命令?

面对同样的情况,我倾向于这样做,直到所有
branch\u文件所在的分支都消失

git rebase BRANCH_WHERE_FILE_IS_REMOVED BRANCH_WHERE_FILE_REMAINS
注意:这不会导致签出仍保留
.idea
的提交,因为rebase的cherry picking是基于已删除文件的提交之后进行的

但是,请注意,如果在任何时候执行
git-rebase--abort
,rebase都会尝试返回到索引中仍有
.idea
的提交,您可能会遇到麻烦。(建议在尝试之前备份
.idea
。)


BRANCH\u其中删除了\u FILE\u
如果没有这样的分支,那么它只能是提交id。

如果另一个分支上的文件与磁盘上未跟踪的文件相同,则可以
git checkout-f
,然后
git rm--cached
。如果没有,并且您想在git不知情的情况下保存未跟踪的文件,那么您必须准确地执行以下操作:将其放在
~/tmp
或其他位置,清理git的视图,然后
mv
将其返回到存储库目录。另外,请立即将其放入
.gitignore
,以避免错误地跟踪它。

不起作用。我正在开发(带有.idea文件的分支)并发布git rebase master(master是没有文件的分支),但我得到“错误:以下未跟踪的工作树文件将被签出覆盖:”你确定不是“我正在开发(没有.idea文件的分支)并发布git rebase master(master是包含文件的分支)?因为这更符合您原来的问题,以及您收到的错误消息。无论如何,您需要发出的命令是向后的。它是
git-rebase-develop-master
。但是这是
develop
上的
master
,我很确定您不想要这个。上面的答案实际上假设“现在当我尝试签出另一个分支时”,你指的是其他功能分支,而不是主线。事实上,如果你想签出主线以发布
git merge develope
,我知道你会遇到最初的问题。是的,这就是问题所在-我的错,我没有提到涉及的分支是我的主分支。如果我再次遇到这个问题,我会尝试你的解决方案