使用git rm命令删除.gitinore中列出的文件
我设置了一个使用git rm命令删除.gitinore中列出的文件,git,Git,我设置了一个.gitignore文件,其中只有一个文件: cat .gitignore README.md .gitignore文件具有以下权限: ls -l README.md -rw-r--r-- 1 tdun0002 1049089 113 Mar 21 18:54 README.md 我不确定问题出在哪里,但当我执行git rm--force*时,所有内容都被删除,包括README.md文件中列出的.gitignore文件 我做错了什么?使用.gitignore文件可以指定哪些未
.gitignore
文件,其中只有一个文件:
cat .gitignore
README.md
.gitignore
文件具有以下权限:
ls -l README.md
-rw-r--r-- 1 tdun0002 1049089 113 Mar 21 18:54 README.md
我不确定问题出在哪里,但当我执行git rm--force*
时,所有内容都被删除,包括README.md
文件中列出的.gitignore
文件
我做错了什么?使用
.gitignore
文件可以指定哪些未跟踪的文件将保持未跟踪状态,即使您尝试添加它们(通常最好在尝试使用这些更改的操作之前完全提交对其的任何更改)。这不是告诉常规git
命令不要处理文件的方法
特别是,当您将文件添加到.gitignore
时,如果文件已经在repo中,则这对它没有影响
由于将您的README.md
添加到.gitignore
时已在repo中,因此它仍然是一个跟踪文件
虽然这可能无法解决您的实际问题:我很难弄清楚您的意图是什么,因为这似乎是一个XY问题-您在问为什么您尝试的东西不起作用,而我们实际上不知道您试图做什么。下面讨论了脑海中出现的两种可能性:
README.md
,只需git rm
它,然后提交/推送/etc.gitignore
文件中git-rm;git签出头--README.md
git rm--dry run[0-9a-zA-QS-Z]*
将不会接触任何以R
开头的文件。您会注意到我在这里使用了--dry run
,因为您可能希望在允许它实际删除之前选中此选项。一旦你感到满意,它会做正确的事情,只需再次运行它,而无需该选项如果这是您试图实现的另一个目标,那么如果您可以扩展它,它将非常方便。您的
.gitignore
是否与README.md
位于同一位置?在添加到.gitignore
之前是否跟踪了该文件?.gitignore
文件与README.md
文件位于同一目录中。但是我没有将.gitignore
文件提交到repo。它是未追踪的。我是否需要将其提交回购协议才能使其生效?在我添加.gitignore
文件之前,已跟踪README.md
文件。是否假设未跟踪的被忽略文件将被git rm
忽略?这个假设从何而来?好的,我想删除该目录中除了README.md
文件之外的所有文件,以便清理它并用不同的文件集和不同的目录结构替换该git目录。当我发出git rm*
命令时,我希望它能保持README.md
文件中列出的.gitignore
文件完好无损。我想要回购协议中的README.md
。有没有办法在git命令行上排除该文件?@bluethundr根据前面的评论,添加了几个可能对您有所帮助的选项。