6

我是 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 的精确克隆,并注意提交。

4

3 回答 3

8

只需启动gitk --all,您就可以检查所有分支、更改等。选择一个点并右键单击另一个点,然后从菜单顶部获得两个版本的差异。

git 中的分支只是提交上的“标签”。如果您在 master 之上创建一个分支,那么它就是您可以获得的完美“克隆”。虽然实际上它只是一个包含相同哈希的 41 字节文件。

我认为你应该熟悉一下什么是什么,从描述中我无法推断出你做了什么,尤其是你追求的是什么。

于 2013-06-26T12:19:08.557 回答
5

如果您没有提交文件,则无法确定文件是在哪个分支上创建的。

于 2013-06-26T12:21:36.757 回答
5

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

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

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

于 2013-06-26T15:46:47.070 回答