Git rm - 缓存和结帐(Git rm --cached and checkout)

我发出了以下命令

git rm --cached .idea

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

现在,当我尝试签出另一个分支时,git失败了,因为它们仍然在另一个分支的索引中 - 这是预期的。

但是,我需要从任何分支的索引中删除这些文件,那么如何在分支上发出相同的git rm --cached命令我无法结账到?


I've issued the following command

git rm --cached .idea

on my develop branch, 'cause i don't want to track ide config files. Files have been removed from index but they're still on filesystem, which is exactly my original goal.

Now when i try to checkout another branch, git fails because they're still in the index of the other branch - this is expected.

However, i need to remove these files from the index of any branch, so how can i issue the same git rm --cached command on a branch i can't checkout to?


原文:https://stackoverflow.com/questions/33938289
2021-12-02 22:12

满意答案

如果另一个分支上的文件与磁盘上未跟踪的文件相同,则可以git checkout -f ,然后git rm --cached 。 如果没有,并且你想在没有git知识的情况下保存未跟踪的文件,你必须完全这样做:把它放在~/tmp东西中,清理git的视图,然后将它恢复到存储库目录。 另外,请立即将其放入.gitignore以避免错误地跟踪它。


If the file on the other branch is the same as the untracked file on the disk, you can git checkout -f, and then git rm --cached. If not, and you want to save the untracked file without git's knowledge, you must do exactly that: put it away in ~/tmp or something, clean up git's view, and mv it back to the repository directory. Also, put it in .gitignore immediately to avoid tracking it by mistake.

相关问答

更多

'git rm -r --cached bin /'无效('git rm -r --cached bin/' is not working)

好吧,首先要确保它实际上已添加到索引中: git add bin 然后执行命令将其删除: git rm -r --cached bin/ 如果问题仍然存在: git reset --hard Alright, first make sure that it's actually added to the index: git add bin Then execute your command to remove it: git rm -r --cached bin/ If the prob...

git rm --cached文件与git重置文件(git rm --cached file vs git reset file)

git rm --cached <file>将完全从索引中删除文件的内容。 这意味着在提交时,文件将从HEAD提交中删除。 (如果文件只添加到索引中,还没有跟踪,这是一个“no-op”。) git reset -- <file>将索引中的文件的内容重置为与头提交相同。 这意味着在提交时不会对文件进行任何更改 。 如果HEAD提交中的文件没有跟踪版本,则此操作无效。 git rm --cached <file> will completely remove the file's contents f...

“git rm --cached x”vs“git reset head-x”?(“git rm --cached x” vs “git reset head -- x”?)

有三个地方可以说一个文件 - 树,索引和工作副本。 当您将文件添加到文件夹时,将其添加到工作副本。 当您执行类似git add file ,将其添加到索引。 当你提交它,你也添加到树。 这可能会帮助您了解git重置中的三个常见标志: git reset [ - <mode> ] [ <commit> ] 此表单将当前分支头重置为<commit>并可能根据<mode>更新索引(将其重置为<commit>树)和工作树,该<mode>必须是以下之一: - 柔软的 没有触摸索引文件或工作树完全(但重置头到...

如何恢复“git rm -r”?(How to revert a “git rm -r .”?)

git reset HEAD 应该做 如果您没有任何未提交的更改,您关心,那么 git reset --hard HEAD 应强制将所有内容重置为最后一次提交。 如果您有未提交的更改,但是第一个命令不起作用,请使用git stash保存未提交的更改: git stash git reset --hard HEAD git stash pop git reset HEAD Should do it. If you don't have any uncommitted changes that...

撤消git rm。(Undo git rm . -r --cached or commit changes?)

“安全”? 它的作用是清空索引并提交删除这些文件, 而不从工作树(您的磁盘)中删除它们 这意味着所有这些文件都被取消跟踪(私有)。 通常,在这样的命令之后你不会提交。 你重置了(就像你做的那样)。 这可以强制内容驱动程序(如涂抹脚本 )或其他.gitattributes指令再次应用于所有文件。 您可以在GitHub帮助页面“ 处理行结尾 ”中看到该命令。 git rm --cached -r . # Remove everything from the index. git reset --ha...

Git rm - 缓存和结帐(Git rm --cached and checkout)

如果另一个分支上的文件与磁盘上未跟踪的文件相同,则可以git checkout -f ,然后git rm --cached 。 如果没有,并且你想在没有git知识的情况下保存未跟踪的文件,你必须完全这样做:把它放在~/tmp东西中,清理git的视图,然后将它恢复到存储库目录。 另外,请立即将其放入.gitignore以避免错误地跟踪它。 If the file on the other branch is the same as the untracked file on the disk, yo...

Git rm - 缓存但仍然跟踪?(Git rm --cached and yet still tracked?)

我没有测试副本提供的解决方案(但会定义测试是否再次出现相同的问题),因为我已经做了一些解决我的问题:我只是删除了远程存储库并再次在远程执行了一个git clone,现在,这个远程存储库按预期运行。 I did not test the solution offered by the duplicate (but would definetely testing if the same problem reappears) because I have already done something ...

'git rm'的意外行为(Unexpected behavior of 'git rm')

git rm所做的是将更改添加到索引以从工作目录中删除文件。 所以你正在升级文件的删除。 这听起来有点奇怪,但这是你能想到的最清晰的方式。 提交包含您之前执行的更改和更改。 通常的更改包括新文件和文件更改,还包括文件清除。 所以删除一个文件被认为是一个改变,通过调用git rm你将这个改变添加到索引。 这是btw。 之所以可以使用像git add -u这样的东西来添加所有挂起的更改,还包括文件删除:文件删除是一个挂起的更改,因此添加它时,您将添加更改以删除该文件。 另外, git rm也会从工作目...

为什么“git rm --cached”会删除最新的文件?(Why “git rm --cached” remove the up-to-date files?)

索引不包含任何内容,它包含您要提交的任何内容,包括已经是repo一部分的文件。 假设您运行以下命令: touch a.txt b.txt git add a.txt b.txt git commit git rm --cached a.txt git commit 首次运行git add ,它会将a.txt和b.txt添加到索引中。 然后, git commit接受索引中的任何内容并提交它。 索引仍包含a.txt和b.txt 。 当您使用git rm --cached ,它会从索引中删除a.tx...

git rm - 缓存.gitignore中列出的所有内容(git rm --cached everything that is listed in .gitignore)

我总是使用以下行删除我的.gitignore列出的文件: grep -vP "^(#|\$)" .gitignore|sed "s/^\///"|xargs rm -f 这将在.gitignore中找到与( -v选项为grep)匹配的正则表达式^(#|\$)匹配以# (注释)或空行开头的行的行。 然后sed将在行的开头删除正斜杠/ 。 结果使用xargs传递给rm -f ,你可以用git rm --cached替换它 注意: 您的.gitignore文件可以包含*.tmp等条目,以忽略整个项目中...

相关文章

更多

删除文件-git入门教程

在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交: $ ...

解决冲突-git入门教程

人生不如意之事十之八九,合并分支往往也不是一帆风顺的。 准备新的feature1分支,继续我们的新分支 ...

Git 常用命令 - 不断更新中

一、git clone git clone 支持本地和远程repository,其格式如下 ...

创建与合并分支-git入门教程

在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前, ...

Git分支管理

Git分支管理 分类: GitHub 201 ...

那些年挠头的git

到今天为止,我终于可以不用挠头来探索这个git的使用原理了。。。。 虽然觉得自己的英语还不错,但是之前 ...

创建标签-git入门教程

在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branch* dev ma ...

多人协作-git入门教程

当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且 ...

配置别名-git入门教程

有没有经常敲错命令?比如git status?status这个单词真心不好记。 如果敲git st就表 ...

撤销修改-git入门教程

自然,你是不会犯错的。不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: ...

最新问答

更多

将十六进制的字符串转换为字符串(Convert hex-encoded String to String)

您希望将十六进制编码的数据用作AES密钥,但数据不是有效的UTF-8序列。 您可以将其解释为ISO Latin编码中的字符串,但AES(key: String, ...)初始化程序将该字符串转换回其UTF-8表示形式,也就是说,您将从开始时获得不同的关键数据。 所以你不应该把它转换成字符串。 使用 extension Data { init?(fromHexEncodedString string: String) } 方法从Swift中进行十六进制/二进制字符串转换,将十六进制编码的

将friendly_id添加到用户模型后,登录后的友好转发不起作用(Friendly forwarding after login doesn't work after adding friendly_id to the user model)

在应用程序控制器中,将redirect_back_or(path)方法更改为此方法。 def redirect_back_or(path) redirect_to session[:forwarding_url] || path session.delete(:forwarding_url) end 你有redirect_to request.referer之前负责将你重定向到最后一个url,即login_url。 我不知道为什么你要定义两个不同的方法

Qt + VS2010:由于 .dll从您的计算机丢失,程序无法启动(Qt + VS2010: The program can't start because .dll is missing from your computer)

您可能需要将有问题的DLL复制到您的可执行文件所在的文件夹中,或者确保DLL位于系统PATH中的文件夹中。 You likely need to copy the DLLs in question to the folder your executable is in, or ensure that the DLLs are located in a folder in the system's PATH.

AutoFixture使用内部setter创建属性(AutoFixture create property with internal setter)

理想情况下 ,测试不应该与类的internal成员交互,因为它们明确地从其公共API中排除 。 相反,这些成员将通过公共API启动的代码路径间接测试。 但是,如果在您的特定情况下这不可行,则可能的解决方法是从测试中明确地为内部属性赋值 。 您可以通过以下两种方式之一来实现: 通过使用InternalsVisibleTo属性将程序集中的所有内部成员公开给测试项目。 通过在特定接口中表示类的可修改状态并明确地实现它。 在您的示例中,选项1将是: // [assembly:InternalsVisib

使用Trigger.IO/PhoneGap在UIWebView中使用focus()事件自动显示键盘(Show keyboard automatically with focus() event in UIWebView using Trigger.IO/PhoneGap)

访问UIWebView不是我们在当前版本的插件中正确公开的东西(但我们很快就会支持)。 现在,如果您想尝试一下,可以添加 extern UIWebView *webView; 在插件文件的顶部,这将使您的API方法中的变量webView可用。 这将很快停止工作,所以我建议你现在只用它来测试一下。 2012年10月更新 : 该应用程序的Web视图现在通过ForgeApp : http : ForgeApp 例如: [ForgeApp sharedApp].webView Access to t

ASP.NET MVC控件(ASP.NET MVC Control)

您可以使用RadComboBox以及此处找到的此telerik社区项目提供的一些小调整。 应该在MVC中都能正常工作。 You can use the RadComboBox along with a little tweaking as provided for by this telerik community project, found here. Should all work fine in MVC.

在后期保存上下文 - 将指针保存到上下文?(Saving Context At a Later Stage - Saving Pointer To Context ? Core Data)

是的,您可以在循环后保存上下文。 它比每次迭代中的保存要好得多。 如果你看一下MagicalRecord src,你会看到MR_contextForCurrentThread总是为相同的线程返回相同的上下文,如果没有上下文的线程,MagicalRecord会创建它。 此外,您不需要传递上下文[_entityClass createInContext:context] ,只需要[_entityClass MR_createEntity] - 它将在当前线程的上下文中创建 Yes, you can

tinyMce函数用于确定弹出窗口是否已打开(tinyMce function to determine if popup is already open)

这是我要去的解决方案: 我似乎已经确认: - windowManager.open()不会像window.open()那样返回对窗口的引用 - windowManager没有内置方法来限制可以打开的实例数。 但它确实有一种方法可以将onClose函数添加到插件窗口:ed.windowManager.onClose.add(function(){alert('Closing!');}); 所以我将在onClick代码中使用一个变量来跟踪弹出窗口是否已被打开和关闭。 onClose函数将该变量标记为

使用nil调用Document.find在mongodb中无效(Calling Document.find with nil is invalid in mongodb)

OrderController #new调用OrderController#current_cart,它运行Cart.find(session [:cart_id])。 在会话开始时没有:cart_id,即session [:cart_id]为nil,你得到上面的Mongoid :: Errors :: InvalidFind异常。 请注意,当您正在抢救ActiveRecord :: RecordNotFound时,您的救援子句不会挽救该异常。 您正在使用Mongoid,而不是ActiveRec

在函数中返回postgresql查询结果(Return postgresql query result in a function)

假设您正在使用nodejs和pg模块。 正如您所说,由于查询功能是异步的,您无法直接将结果返回给调用者。 传统上,在nodejs中,调用者传递一个回调函数来处理结果或错误(如果有的话)。 在Kotlin中,这看起来像: client.query(MY_QUERY_TEMPLATE, params) { err, result -> if (err != null) { // do something with the error }