Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 搞砸了分支,旧的主分支显示新分支的文件?_Git_Version Control_Github_Branch_Git Branch - Fatal编程技术网

Git 搞砸了分支,旧的主分支显示新分支的文件?

Git 搞砸了分支,旧的主分支显示新分支的文件?,git,version-control,github,branch,git-branch,Git,Version Control,Github,Branch,Git Branch,正如您所理解的,我仍在学习Git和分支如何工作。无论如何: 我在一家本地master分支机构工作 我使用IDE创建并切换到一个新的fcwdetection分支以添加一些代码,这意味着不通过命令行 IDE要求我将我创建的新文件(比如A.php)添加到存储库中。我添加了它并修改了B.php(已经添加) 结果是master分支(我切换回它)现在有A.php,B.php与fcwdetection分支中的B.php具有相同的编辑 这怎么可能?这是IDE的错误还是我完全误解了分支的工作方式?您的工作流似乎是

正如您所理解的,我仍在学习Git和分支如何工作。无论如何:

  • 我在一家本地
    master
    分支机构工作
  • 我使用IDE创建并切换到一个新的
    fcwdetection
    分支以添加一些代码,这意味着不通过命令行
  • IDE要求我将我创建的新文件(比如
    A.php
    )添加到存储库中。我添加了它并修改了
    B.php
    (已经添加)
  • 结果是
    master
    分支(我切换回它)现在有
    A.php
    B.php
    fcwdetection
    分支中的
    B.php
    具有相同的编辑


    这怎么可能?这是IDE的错误还是我完全误解了分支的工作方式?

    您的工作流似乎是正确的。看起来像是IDE中的错误。如果只想在
    fcwdetection
    分支中保存修改后的文件,则应在该分支中提交这些文件。 在命令行中,您可以执行以下操作:

    创建分支:

    git checkout -b fcwdetection
    
    编辑
    A.php
    并创建
    B.php
    将所有文件,包括新的
    B.php
    添加到
    git

    git add -A .
    
    fcwdetection
    中提交它们:

    git commit -m 'Commit message'
    
    此时,如果您在
    master
    中签回,您将看到文件的旧版本:

    git checkout master
    
    如果您一直看到
    A.php
    B.php
    的修改版本,您应该检查它们的状态,它们是否已添加到
    索引中?我这么说是因为
    git
    不允许您使用修改过的未提交文件从一个分支切换到另一个分支,在命令行中您会遇到以下错误:

    error: Your local changes to the following files would be overwritten by checkout:
    [some files]
    Please, commit your changes or stash them before you can switch branches.
    
    Aborting
    

    您的工作流程似乎正确。看起来像是IDE中的错误。如果只想在
    fcwdetection
    分支中保存修改后的文件,则应在该分支中提交这些文件。 在命令行中,您可以执行以下操作:

    创建分支:

    git checkout -b fcwdetection
    
    编辑
    A.php
    并创建
    B.php
    将所有文件,包括新的
    B.php
    添加到
    git

    git add -A .
    
    fcwdetection
    中提交它们:

    git commit -m 'Commit message'
    
    此时,如果您在
    master
    中签回,您将看到文件的旧版本:

    git checkout master
    
    如果您一直看到
    A.php
    B.php
    的修改版本,您应该检查它们的状态,它们是否已添加到
    索引中?我这么说是因为
    git
    不允许您使用修改过的未提交文件从一个分支切换到另一个分支,在命令行中您会遇到以下错误:

    error: Your local changes to the following files would be overwritten by checkout:
    [some files]
    Please, commit your changes or stash them before you can switch branches.
    
    Aborting
    

    您在
    fcwdetection
    分支中提交了这两个文件吗?@Atropo我不这么认为,IDE只要求我“添加”它以进行跟踪。我为
    A.php
    选择了“是”,并像往常一样编辑了
    B.php
    。您在
    fcwdetection
    分支中提交了这两个文件吗?@Atropo我不这么认为,IDE只要求我“添加”它以进行跟踪。我已经为
    A.php
    选择了“是”,并像往常一样编辑了
    B.php
    。在将文件提交到
    fcwdetection
    并切换回
    master
    之后,现在我看到了
    B.php
    的正确版本,并且
    A.php
    被删除。那很好。但是,当我在使用
    master
    时,为什么IDE会显示
    fcwdetection
    中未提交的文件呢?!太令人困惑了…你在用什么IDE?如果您在files.PHPStorm new version 6中有本地更改,IDE应该阻止您切换到另一个分支。下面是发生的情况:如果我在分支a中编辑一个文件(不提交任何内容),当我切换回分支B时,我可以看到编辑。没有警告。看起来像是IDE的行为。在将文件提交到
    fcwdetection
    并切换回
    master
    之后,我更喜欢从命令行使用
    git
    ,现在我看到了
    B.php
    的正确版本,并且
    A.php
    被删除。那很好。但是,当我在使用
    master
    时,为什么IDE会显示
    fcwdetection
    中未提交的文件呢?!太令人困惑了…你在用什么IDE?如果您在files.PHPStorm new version 6中有本地更改,IDE应该阻止您切换到另一个分支。下面是发生的情况:如果我在分支a中编辑一个文件(不提交任何内容),当我切换回分支B时,我可以看到编辑。没有警告。看起来像是IDE的行为。我更喜欢从命令行使用
    git
    :-)