【问题标题】:Git keeps adding files in .gitignore on first commit and push to remoteGit 在第一次提交时不断在 .gitignore 中添加文件并推送到远程
【发布时间】:2021-12-30 21:05:18
【问题描述】:

我正在尝试进行第一次提交并推送到 github。最初我的角度/缓存不在 gitignore 文件中。现在我添加了它并尝试提交和推送,但它一直包含 angular/cache 目录,即它一直试图添加我认为以前跟踪的东西。

我尝试过的事情:

git rm -r --cached . && git add . && git commit -am "Remove ignored files"
git push -u origin master

我也试过 git update-index --assume-unchanged .angular/cache

每次我提交的时候都会继续添加

【问题讨论】:

  • 注意:我已经尝试过stackoverflow.com/questions/1274057/…中的建议
  • 你推什么了吗?你有什么承诺吗?如果您有推送任何内容,则必须取消跟踪要添加到 gitignore 的特定文件。这是如何工作的,看看这个answer。如果您没有推送任何内容,则必须使用 git reset <file> 将要添加到 gitignore 的文件取消暂存,添加到 gitignore,提交并推送。
  • 如果您已经提交了文件,它们就在该提交中。他们在那个提交中永远。您可以进行缺少文件的新提交,但不能从现有提交中删除文件。如果错误的提交是您的第一次提交,那么解决这个特定的错误可能会变得非常痛苦。有一些变通方法,但在解决它们之前,我们应该找出您有多少次提交:将git log --all --decorate --oneline --graph 的输出添加到您的问题中。

标签: git gitignore


【解决方案1】:

.gitignore 文件仅防止将未跟踪的文件添加到索引[1],因此如果您运行git add,则不会添加其中列出的文件。它确实从索引中删除已添加的文件!为什么从索引中删除文件没有帮助我不知道,但如果你 rm -rf .git 文件夹并重新初始化一个新的存储库(即从头开始启动你的 git 存储库),它应该可以工作。

【讨论】:

  • 这对我来说是最简单的解决方案,谢谢
【解决方案2】:

检查 .gitignore 文件中的规则并尝试运行以下命令。当您使用-r 标志时,在这种情况下使用-rf 标志。

git rm -rf --cached .
git add .
git commit -m "gitignore is now working"
git push

应用于git rm 命令的标志描述如下:

  • -f 覆盖安全检查以确保 HEAD 中的文件与暂存索引和工作目录的内容相对应。
  • -r 这是“递归”的简写。 git rm 在递归模式下工作时会删除目标目录及其全部内容。

参考文献

【讨论】:

  • 所以我尝试了命令并在提交后消息“在分支主机上没有提交,工作树干净”然后当我推送“git push --set-upstream origin master”时它仍然推送一切都可能是因为它是这个 repo 的第一次推送?有关信息:我在第一次尝试推送(失败)之后添加了 gitignore 规则,然后我添加了可能导致这种情况的规则?
猜你喜欢
  • 2021-09-23
  • 2013-04-08
  • 2015-04-17
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 2012-06-07
相关资源
最近更新 更多