2010-09-02 110 views
20

如果我做这在我的库之一:git subtree pull表示工作树有修改,但git状态表明它没有修改。是什么赋予了?

git subtree pull --prefix=frameworks/AquaticPrime --squash AquaticPrime 

我得到这个:

Working tree has modifications. Cannot add. 

如果我这样做(在同一个地方,当然):

git status 

我得到这个:

# On branch master 
nothing to commit (working directory clean) 

我不太确定这里发生了什么事。 git status命令意味着我没有修改,所以我假定git子树拉是指与子树相关的不同分支中的修改,但它并不完全清楚。

任何人都可以提供启发吗?

+1

从快看看源,'混帐subtree'打印,当'git的差异,分度头--exit码 - 安静“退出”失败“,即存在变化。如果你运行'git diff-index HEAD',会发生什么? – Cascabel 2010-09-02 03:28:10

+0

您也可以尝试'-d'(调试)选项。 – Cascabel 2010-09-02 03:29:07

+0

当我运行git diff-index HEAD时,我得到“fatal:ambiguous argument'HEAD':未知版本或路径不在工作树中。”类似的输出,如果我使用-d调试标志。 所以问题是,HEAD为什么会是未知的? – 2013-05-28 01:55:07

回答

-4

尝试拉动没有--squash,如this stackoverflow question中所述。

+1

谢谢,我觉得有点粗鲁不投票/滴答作响的答案,但事实是,它是如此之久,我不再次使用子树,我不能真正测试答案,看它是否工作! – 2012-06-18 21:15:58

+1

我有同样的问题,并删除--squash不解决它。 – Alkaline 2012-11-08 22:41:16

+1

我没有用南瓜开始。事实上,我甚至不知道你为什么会认为它会工作,因为你发布的SO问题没有询问我们收到的信息。 – 2013-05-28 01:49:16

10

我现在解决了这个问题。我的问题在我看来,这个存储库是全新的:我从来没有对它做过任何事情。一旦我将一个文件提交到回购站,我就能够移过这个错误。

但是,使用命令git subtree add C:\gitTest\repos\subA -d --prefix subA我得到了新的错误:

fatal just how do you expect me to merge 0 trees?

乱搞一分钟后,我想通了,它需要特定的修订版本传递给它。所以这个命令似乎已经成功了:

git subtree add C:\gitTest\repos\subA HEAD -d --prefix subA

而且很明显,你不需要-d调试标志。

+1

谢谢**非常**!你对关于空存储库的问题的观察结果也证明了[有关'git tfs subtree add'问题的这个问题](http://stackoverflow.com/questions/25886008/how-to-manage-two -tfs项目功能于一身,混帐资料库/ 38081315#38081315)。确切的错误信息是'致命的:模棱两可的论点'HEAD':未知的版本或路径不在工作树中。“并且它完全是关于主空回购中”缺少HEAD“的。 – quetzalcoatl 2016-06-28 18:18:07

18

我刚刚有同样的问题。 从GIT源,当命令git diff-index HEAD返回结果时,即使git status表示工作树是干净的,也会引发错误。

为了避免这种错误,在我的情况,我重新签工作树的当前分支,一切似乎OK:git checkout <branch>

这是一个有点困惑,但如果有人能解释为什么...

+1

这个问题的描述很好,但我需要更多的信息来实现它...... OH,你只是想在主(非子树)模块中运行“git checkout master”。大! – 2014-10-12 20:03:50

+0

谢谢,作品像魅力! – 2014-11-23 06:36:24

0

我刚刚有这个问题,当我:

  • 增加了一个子树;
  • 意识到,我错误地添加了它(错误的目录);
  • 用rm删除它;
  • 试图再次导入它(到正确的地方)。

虽然puppet diff是 - 正确地 - 深藏不露,列出的每个我只是删除为“已删除”文件的git diff-index HEAD - 尽管我从来没有犯-ED(更不用说推ED)任何东西。

我相信,这是git的一个bug(使用2.7.0这里)......错误与否,解决办法是要切换回任何另一个分支(与通常git checkout ....),然后你的。希望,这可以帮助某人 - 即使不是最初的提问者。

1

git reset --hard它固定在我

git reset --help

--hard Resets the index and working tree. Any changes to tracked files in the working tree since are discarded.

相关问题