Git 搞砸了分支,旧的主分支显示新分支的文件?
正如您所理解的,我仍在学习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的错误还是我完全误解了分支的工作方式?您的工作流似乎是
master
分支机构工作fcwdetection
分支以添加一些代码,这意味着不通过命令行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
:-)