我是git的新手,最初我曾经只在主分支上工作然后我读了一些关于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,并注意提交。
答案 0 :(得分:8)
只需启动gitk --all
即可检查所有分支,更改等内容。选择一个点并右键单击另一个点,然后从菜单顶部获得两个版本的差异。
git中的分支只是提交中的“标签”。如果您在主服务器上创建一个分支,它就像您可以获得的那样完美“克隆”。虽然它实际上只是一个包含相同哈希值的41字节文件。
我认为你应该把自己的一些东西归结为什么,从描述中我无法推断出你做了什么,尤其是你所追求的。
答案 1 :(得分:5)
如果您没有提交文件,则无法确定文件创建的分支。
答案 2 :(得分:5)
如@abeaumet所述,如果您创建文件但未提交文件,则在更改分支时无法跟踪它们。
这是因为它们位于您的工作树中,而不是您的git存储库。您的工作树实际上是存储库的已检出版本,以及您当前正在进行的任何更改。移动分支不会删除这些未跟踪的文件,git会将它们留在工作树中,以免被删除。
阅读this question中链接的一些文章,了解您的存储库与工作树之间的区别。