【问题标题】:how to recover the tracking status from git rm --cached .? [duplicate]如何从 git rm --cached 恢复跟踪状态。? [复制]
【发布时间】:2015-05-16 17:44:54
【问题描述】:

我刚刚在我的项目中修改了 10 个文件,并且想要提交所有这 10 个文件。我所做的是:

git add -A

然后我发现这个命令添加了很多未跟踪的文件,所以我尝试从提交中删除那些未跟踪的文件。

我做的(错误的)是:

git rm -r --cached .

然后我发现我丢失了所有文件。是否有任何命令可以恢复我的跟踪文件状态?

【问题讨论】:

  • @PedroNascimento 不同的情况。我的文件还在磁盘中。我要求一个命令来恢复跟踪状态,而不是恢复文件本身。

标签: git


【解决方案1】:

根据我在测试 git 存储库中所做的 git rm -r --cached 。不会从磁盘中删除文件或恢复对磁盘的更改,但会取消暂存它们。

这就是我所做的

$git init
$touch test
$echo "Hello" > test
$git add .
$git commit -m "First commit"
$echo "Fellow" >> test
$git add .
$git rm -r --cached .
$cat test
hello
fellow

因此,您唯一需要做的就是将这些文件添加回去。

我认为没有任何方法可以重新添加跟踪,因为您已经删除了跟踪。对当前 HEAD 进行软重置可能能够检索跟踪,但我没有尝试过。

【讨论】:

  • 是的。文件仍然存在于磁盘中。我要问的是恢复以前跟踪的文件状态的命令,而不是手动添加它们。
  • 用可能的解决方案更新了答案。在尝试之前进行备份。
  • 您想要--mixed 样式重置(--mixed 是默认设置,因此您可以省略它)。这会将给定的提交(默认 HEAD)复制到索引中,这具有撤消 git rm --cached 的效果。请注意,它还会撤消 git adds,因此您可能需要选择指向 git reset 的特定路径。
猜你喜欢
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 2017-03-05
  • 2016-02-07
  • 2011-08-13
  • 2022-11-02
相关资源
最近更新 更多