我正在使用git版本2.15.0.windows.1
我的gitignore文件中包含以下内容:
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MyNamespace;assembly=MyAssembly"
x:Class="MyNamespace.PickingPartItemTemplate">
<StackLayout Spacing="0"
Padding="0"
HorizontalOptions="Fill">
<StackLayout Spacing="5"
Padding="0,0,0,0"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
Orientation="Horizontal">
<!-- References -->
<StackLayout HorizontalOptions="StartAndExpand"
VerticalOptions="Center"
Margin="2,0,2,0">
<Label TextColor="{DynamicResource BaseTextColor}">
<Label.FormattedText>
<FormattedString>
<Span Text="{Binding Reference}"
FontAttributes="Bold"
ForegroundColor="{DynamicResource DarkTextColor}" />
<Span Text=" " />
<Span Text="{Binding Description}" />
</FormattedString>
</Label.FormattedText>
</Label>
<Label Text="{Binding Comment}"
FontAttributes="Italic"
FontSize="14"
Opacity=".5"
TextColor="{DynamicResource BaseTextColor}" />
</StackLayout>
<!-- Quantities -->
<StackLayout VerticalOptions="Center"
HorizontalOptions="EndAndExpand"
Margin="2,0,2,0"
WidthRequest="80">
<Label TextColor="{DynamicResource BaseTextColor}"
FontSize="14"
HorizontalTextAlignment="End">
<Label.FormattedText>
<FormattedString>
<Span Text="{Binding Qty}"
FontAttributes="Bold"
ForegroundColor="{DynamicResource DarkTextColor}" />
<Span Text=" " />
<Span Text="{Binding UnitCode}"
FontSize="10" />
</FormattedString>
</Label.FormattedText>
</Label>
<Label TextColor="{Binding StatusColor}"
FontSize="14"
HorizontalTextAlignment="End">
<Label.FormattedText>
<FormattedString>
<Span Text="{x:Static local:FontAwesome.ShoppingCart}"
FontFamily="FontAwesome" />
<Span Text=" " />
<Span Text="{Binding PrepareQty}"
FontAttributes="Bold" />
</FormattedString>
</Label.FormattedText>
</Label>
</StackLayout>
</StackLayout>
<!-- Bottom Line -->
<BoxView BackgroundColor="{Binding StatusColor}"
HeightRequest="2"
VerticalOptions="End" />
</StackLayout>
</ContentView>
我的理解是第三行告诉git跟踪与以* .btt结尾的模式匹配的文件。由于前面的!
,这是不要忽略我的问题是,我的文件 eformsV2.btt 被忽略了。 我使用了 git check-ignore 命令,它返回的模式如下所示:
文档(git doc)建议“ check-ignore”仅显示它认为被忽略的文件的路径-正确,但是为什么模式的!前缀是不会导致文件被跟踪?
答案 0 :(得分:1)
我的问题是文件是否实际上被忽略了。 (即使是“不要忽略”的规则,Git的check-ignore
也会告诉您哪个规则与文件匹配)。
我创建了一个测试目录,并将您的示例.gitignore
文件复制到其中,然后
制成了两个子目录:
$ mkdir eforms eforms/eformsV2.Bam
$ cd eforms/eformsV2.Bam/
$ touch ignoreme
$ touch eformsV2.btt
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
../
$ git status -uall
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
eformsV2.btt
nothing added to commit but untracked files present (use "git add" to track)
git check-ignore -v eformsV2.btt
.gitignore:3:!**/*[Bb][Aa][Mm]/*.btt eformsV2.btt
除了我跑过git status
两次并显示(带有第二个更详细的-uall
变体)eformsV2.btt
不是不是的事实,这似乎与您的屏幕截图匹配。
在没有git status -uall
的{{1}}仅显示目录的情况下运行git status
很有用,因为此时您所知道的是:该目录中的某些文件不在索引中,但它们都不会被忽略。从更高的角度来看更有意义:
-uall
由于本身没有可跟踪的文件 $ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
eforms/
nothing added to commit but untracked files present (use "git add" to track)
-即使这些文件位于eforms/
的子目录中,也是如此— Git已将所有此类文件的缩写简称为eforms
,而不是eforms/
。但是eforms/eformsV2.Bam/
会指向您告诉您为什么不忽略文件 的行。
还请注意,git check-ignore -v
中是否存在路径名不会影响是否实际跟踪了文件。这由文件是否现在位于索引中 严格控制。如果路径名存储在索引中,则跟踪该文件;否则,将跟踪该文件。如果路径名不在索引中,则文件不会被跟踪。 .gitignore
条目主要告诉Git是否应该对未跟踪的文件进行投诉。 (在某些情况下,它也会允许Git破坏文件。)