我的## 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之前存在?如果我把它放在忽略之内,我认为它会停止跟踪它,但我想情况并非如此。这是一个截图:
如何停止跟踪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
的更改?
答案 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>
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选项。