忽略的文件仍显示更改

时间:2016-01-07 20:37:09

标签: git visual-studio github gitignore

我的## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # Project files *.sln *.vcxproj *.vcxproj.filters UpgradeLog.htm # User-specific files *.suo *.user *.userosscache *.sln.docstates # .... 如下:

main.sln

现在所有这些文件都被正确忽略,但我的解决方案文件main.sln除外。当我特意把它放在gitignore中时,为什么不会忽略它?

是否由于main.sln在我将其添加到ignore之前存在?如果我把它放在忽略之内,我认为它会停止跟踪它,但我想情况并非如此。这是一个截图:

enter image description here

如何停止跟踪limit = 10**19 # this change is important because otherwise you will loose 1 solution # k > limit and exists such i that k - (1 << i) < limit string = raw_input() year1, year2 = string.split() year1 = int(year1) year2 = int(year2) x = 1 count = 0 a = [] while True: k = 2**x - 1 if k > limit: break for i in xrange(x - 1): # k has exactly x bits. So we have only x-1 chances to set zero bit if year1 <= k - (1 << i) <= year2: count += 1 x += 1 print count 的更改?

3 个答案:

答案 0 :(得分:4)

.gitignore中的行只会忽略不属于存储库的文件。将它们添加到存储库后,它们将被跟踪,并且不能被忽略。

如果你想真正停止追踪这个文件,你必须从git树中删除它。只需从命令行执行:

$ git rm --cached main.sln

然后提交更改。从那时起,您的文件将被gitignored。

注意:--cached选项是将实际文件保留在工作目录中。没有它,文件也将被删除。

答案 1 :(得分:0)

是的,您的假设是正确的,您必须从存储库中删除该文件,以便git开始忽略它:

git rm main.sln
git commit -m"Removing file which should be ignored"

答案 2 :(得分:0)

.gitignore仅适用于未跟踪的文件。如果已经跟踪了文件,则不能忽略它;如果将文件添加到存储库中,则有两种解决方法:

1)。第一种方法是

git update-index --assume-unchanged <file>

From the doc:

  
      
  • git-update-index -在工作树中将文件内容注册到索引,

  •   
  • -假定未更改-当“假定未更改”位打开时,用户承诺不更改文件,并允许Git假定工作树文件与当前文件匹配。记录在索引中

  •   

2)。第二种方法 是从存储库中删除文件,如下所示:

git rm --cached <file>

git-scm-doc:中的命令说明

  
      
  • git-rm -   从工作树和索引中删除文件
  •   
  • -已缓存-   使用此选项可以取消登台并仅从索引中删除路径。无论是否已修改,工作树文件都将被保留。 (这意味着将从树索引而不是从真实目录中删除文件 。)
  •   
  • <file> -   要删除的文件。可以使用Fileglob(例如* .c)删除所有匹配的文件。如果您希望Git扩展文件Glob字符,则可能需要对它们进行shell换码。可以指定一个前导目录名(例如,用于删除dir / file1的dir和dir / file2)来删除目录中的所有文件,以及递归地删除所有子目录,但这需要显式地指定-r选项。
  •