我是git的新手,起初我只在master分支上工作,然后我读了一些有关git分支的知识,我对它的功能感到惊讶,因此我开始在工作流程中使用分支

当我开始分支时,我的主分支是干净的,没有提交的内容。
然后,我创建了新的分支 feature1

git checkout -b feature1

我在分支 feature1中进行了更改,添加了一些js和css文件。然后,我从master分支创建了另一个分支,而没有提交对 feature1 分支的更改,如下所示:
git checkout master
git checkout -b feature2

我在 feature2 分支中添加了更多代码,并添加了一些新的css文件,然后我再次从master创建了另一个分支 feature3 ,并在分支 feature2 中进行了更改,如下所示:
git checkout master
git checkout -b feature 3

我在 feature3 分支中添加了一些新代码,其中包含1个新的CSS文件。现在,当我做的时候:
git status

我得到了我修改过但未在所有3个分支中提交的所有文件的列表。我期望我只会得到当前分支中修改的文件列表,即分支 feature3 ,现在我不记得我在哪个分支中创建了哪些文件。

谁能帮我只列出我在特定分支中创建或修改的文件并提交。到各自的分支机构。

例如

列出在 feature1 分支中修改或创建的所有文件,并将它们提交到 feature1 分支,并对所有3个分支执行此操作。

我也想知道如何从master分支创建一个分支,而又不获取其他文件,这些文件在其他分支中已修改但未提交。即我希望新分支是master的精确克隆,并且要注意提交。

最佳答案

如@abeaumet所述,如果您创建文件但不提交它们,则在更改分支时无法跟踪它们。

这是因为它们位于您的工作树中,而不是您的git存储库中。您的工作树实际上是存储库的 checkout 版本,以及您当前正在进行的任何更改。移动分支不会删除这些未跟踪的文件,git会将它们保留在您的工作树中,因此不会被删除。

阅读this question中链接的一些文章,以了解您的存储库和工作树之间的区别。

09-11 18:10
查看更多