2013-12-10 67 views
0

近日文件中的某些项目需要,我正致力于与另一种特征B现在separatly一个特定的特征的。因为这对svn来说相当麻烦,所以我决定花时间重新设置我的开发环境。的Git分支包含来自其他分支

我用git-svn检出了svn,创建了一个分支“localconf”,提交了eclipse特定的更改,再次分支并复制了从我以前的svn工作区的分支“feature-a-b”中的所有更改。现在我做

git checkout localconf 
git branch feature-a 

,开始一个新的分支“功能,一个”与localconf开始incoparate从“功能-A-B”这些变化,我需要。

但现在localconf包含属于功能-A-B的所有文件......这相当让我为难,不是功能-A-B分支的那些前提交的部分? git的状态/日志并不表明遗漏,更新...

谷歌搜索一些关于Git和树枝变成了大把过于简单文档的教程或很多不太被摄对象。我如何从这里进步?也许我失去了一些东西在概念...

编辑: 发现http://www.gitguys.com/topics/creating-and-playing-with-branches/我已经试过

git checkout master 

,瞧后:从功能-A-B的那些文件是不被跟踪。

git checkout localconf 

恢复它们即使

git log --name-status 

没有提到任何人......

EDIT2: 卫生署!

这一直没有一个分支/观/任何问题:目前已经排除从功能-A-B在localconf所有变化的.gitignore文件...所有他们的努力

谢谢!

+0

当你复制的变化从SVN到功能-AB,你有没有'混帐add'一切' git commit'在检出localconf之前? –

+0

是的,我做过。检出分支的日志看起来正确。 –

回答

0

已经有.gitignore文件中都localconf和功能,AB防止任何变化,而开关支路检查...

0

git branch branch_name创建一个新的分支,但不切换到它。

git checkout -b branch_name创建一个新的分支并切换到它。

如果您对git branch branch_name进行了更改,然后提交,它们将会被提交到您签出的最后一个分支。

+0

根据日志提交已经到了正确的分支。 –

0

假设您在克隆存储库时提交了A

- A 
    \ 
    master - HEAD 

然后您创建并签出分支localconf。分支是指向提交的指针。如果您没有另外指定,它将指向您当前所在的相同位置(HEAD)。

- A - localconf - HEAD 
    \ 
    master 

然后你提交了提交B到那个分支。

- A - B - localconf - HEAD 
    \ 
    master 

master仍然指向Alocalconf现在指向B。然后你创建了另一个分支,feature-a。那个分支,那个指针指向HEAD所在的位置,如果你使用了像git branch feature-a这样的命令。这就是为什么你看到你在localconf上所做的工作。

- A -  B - feature-a - HEAD 
    \  \ 
    master localconf 

如果继续从这里开始feature-a工作,使提交C,你的历史看起来是这样的。

- A -  B - C - feature-a - HEAD 
    \  \ 
    master localconf 

master指向Alocalconf分数Bfeature-a点数C

如果你有feature-a提交,你想保存,git rebase --onto master localconf feature-a将产生以下。

 C - feature-a - HEAD 
    /
- A -  B 
    \  \ 
    master localconf 

如果您还没有承诺feature-a的是,它可以在概念更有意义删除并重新在正确的地方分支。

研究诸如git log --decorate --graph --all --oneline之类的命令的输出或经常使用诸如gitk --all之类的gui来了解在分支并提交到存储库时发生了什么。

+0

我的历史看起来像图四,但实际上它被称为'feature-a-b' :)。现在我想返回'localconf'开始一个新的分支'feature-a',从那里开始:'git checkout localconf',但是checkin C中的所有文件仍然存在......并且没有像当我要去时那样报告为untracked回到'主人'。 –