2013-06-26 44 views
6

我是git的新手,最初我以前只在主分支上工作,然后我读了一点关于git分支,我惊讶它的权力,所以我开始使用分支在我的工作流程如何列出所有未提交的变化只在当前分支在git

当我开始分支我的主分支是干净的没有提交。 然后创建新的分支特征1

git checkout -b feature1 

我在分公司做了我的变化特征1增加了一些JS和CSS文件。然后,我创建的主分支的另一分支不提交作出分支特征1像这样的变化:

git checkout master 
git checkout -b feature2 

我增加了一些更多的代码在特点2分支并增加了一些新的CSS文件,然后我再次创造了另一个分支特点3从主与分支特点2这样提交修改:

git checkout master 
git checkout -b feature 3 

我增加了一些新的代码功能3分支与1个新的CSS文件。现在当我这样做:

git status 

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

任何人都可以请帮助我只列出我在特定分支创建或修改的文件并提交它们。到各自的分支。

对于e.g

列表修改或创建特征1分支,他们承诺特征1分支,并与所有3个分支做到这一点的所有文件。

我也想知道如何从主分支创建分支而不会获得在其他分支中修改但未提交的其他文件。即我希望新的分支精确地克隆主,注意提交。

回答

5

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

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

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

8

刚刚启动gitk --all,你可以检查所有的分支机构,变化,无论如何。选择一个点,然后右键单击另一个点,并从菜单顶部获得两个版本的差异。

git中的一个分支只是一个提交上的'标签'。如果你在主人之上创建了一个分支,它就像你所能得到的那样是完美的“克隆”。尽管它只是一个包含相同散列的41字节文件。

我认为你应该对自己有所了解,从描述中我不能推断出你做了什么,尤其是你在做什么。

+0

我有一个干净的主分支我创建了新的分支f1添加了一些代码,但我没有提交新的更改添加到f1 bcoz我不想混乱提交历史,然后我在这里创建了另一个分支f2我添加了新的代码,但没有提交它们,我又创建了新的分支f3并在f3中添加了一些新的代码,所以我想提交对f3所做的更改,所以我现在检查了git状态,在此列出了我在f1中修改的所有文件, f2,f3所以现在我想知道哪个地方我在f3创建的唯一文件,所以我可以提交它们。所以我怎么能列出只有文件我加入f3分支或任何otr分支 – user2373881

+1

这听起来不太好。您创建的“新”分支几乎都是相同的,并指向相同的地方。而你所有的本地修改都是在一起的,没有任何关于你意图的信息。经验法则:在做任何事之前提交(或存储),特别是改变分支。如果你不推动,“杂波”是没有问题的,它是全部本地的,如果你不喜欢它,可以用各种方法重做。 –

+1

确定在创建任何新分支之前学到的很好的经验教训非常有帮助 – user2373881

5

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

相关问题