为什么在git checkout上它会自动在我的新分支中添加更改的文件

时间:2019-06-20 19:32:04

标签: git git-checkout

我必须从项目的一个分支签出到另一个分支。当我这样做时,它还将所有添加的文件也添加到更改的分支中。我不想从该分支提交那些文件。我该怎么办,以后该如何避免

<!-- just a container -->
<Canvas Background="Orange"> 
    <-- a canvas to apply the animation on -->
    <Canvas  x:Name="target" Background="Green"> 
        <!-- your rectangle -->
        <Rectangle Width="200" Height="100" Fill="Blue" Stroke="Black" StrokeThickness="4"/>
         <!-- the animation trigger -->
        <Canvas.Triggers>
            <EventTrigger RoutedEvent="FrameworkElement.Loaded">
                <BeginStoryboard>
                    <Storyboard RepeatBehavior="Forever" AutoReverse="True">
                          <DoubleAnimation Storyboard.TargetName="target" 
                                           Storyboard.TargetProperty="Left"
                                           From="0" To="100" 
                                           Duration="0:0:3"/>
                     </Storyboard>
                 </BeginStoryboard>
             </EventTrigger>
         </Canvas.Triggers>
    </Canvas>
</Canvas>

2 个答案:

答案 0 :(得分:2)

不是。

相反,Git所做的更简单:

  • 您已经修改了这些文件。
  • 您没有提交这些文件。
  • 因此,这些更改仅在您的工作树中存在

然后您问Git:请从master尖端的提交切换到added_more_notification_channels尖端的提交。(我不得不猜测一个分支名称,但在这里并没有多大关系。)

在某些情况下,Git会说:对不起,我不能这样做:如果我这样做了,那么我将用{{1}尖端提交中的副本替换更新的文件来销毁您的更新文件}。

在其他情况下,Git会说:好的,我做到了……但是重要提示:我没有销毁您的更新文件,我把它们留了下来。现在,它们与added_more_notification_channels尖端的提交不匹配,就像它们之前与added_more_notification_channels尖端的提交不匹配一样。如果您打算添加并提交他们移至master,现在您可以再次master回到原来的位置。如果没有,那么您的位置就很好,修改后的文件仍会被修改。

如果您对为什么感到好奇,有时Git会说:好的,我已经换了分支! (我随身带走了您修改过的文件!)有时会说抱歉,我不能这样做!那会破坏您修改过的文件!,请参见Checkout another branch when there are uncommitted changes on the current branch

(实际上,您好像问过Git:请从git checkout master切换到added_more_notification_channels ,这根本没有任何切换,因此始终有效!)

答案 1 :(得分:0)

如果您add/modify/delete一些文件,则可以在另一个分支获取这些文件。因此,如果要首先签出另一个分支,则必须提交更改的文件。然后,您可以签出另一个分支。而且,如果您不提交,则将那些文件发送到checkout分支。 因此,您应该遵循以下步骤-

  • 将更改的文件添加到git
  • 提交此更改
  • 根据需要推送(可选)
  • 结帐另一个分支