如果我在我的一个仓库中这样做:
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子树的pull是指与子树相关的不同分支中的修改,但这并不完全清楚。
谁能提供启示?
8条答案
按热度按时间tkqqtvp11#
我也有同样的问题。从GIT源代码中,当命令
git diff-index HEAD
返回结果时,即使git status
说工作树是干净的,也会抛出错误。为了避免这个错误,在我的例子中,我重新 checkout 了工作树的当前分支,一切似乎都正常:
git checkout <branch>
个有点混乱但如果有人能解释一下原因。。
t1qtbnec2#
git reset --hard
给我修好了从
git reset --help
--hard重置索引和工作树。此后对工作树中的跟踪文件所做的任何更改都将被放弃。
qyzbxkaa3#
我现在能搞定了。我的问题似乎是仓库是全新的:我从来没有承诺过什么。一旦我向repo提交了一个文件,我就能够克服这个错误。
但是,使用
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调试标志。
z9ju0rcb4#
我只是遇到了这个问题,当我:
虽然
puppet diff
没有显示任何内容,但git diff-index HEAD
将我刚刚删除的每个文件都列为“已删除”,尽管我从未提交(更不用说推送)任何内容。我相信,这是git中的一个bug(这里使用2.7.0).不管有没有Bug,解决方法是切换到 * 任何 * 其他分支(使用通常的
git checkout ....
),然后回到您的分支。希望,这能帮助到别人--即使不是最初的提问者。hujrc8aj5#
如果您使用的是Windows,请尝试使用Git Bash而不是PowerShell或cmd.exe。这解决了我的问题。
hfyxw5xn6#
我也犯了同样的错误。这是发生在我的功能分支。解决方案:
1.从功能分支远程拉取到本地
1.从主远程拉取到本地
1.将本地主服务器合并到功能分支,提交并推送到远程
1.运行`git子树pull --prefix MySubdirection https://my/repository/url remotebranch --squash
我不知道为什么我必须获得master并合并到我的特性分支,但这解决了问题。
u91tlkcl7#
我在SourceTree上遇到了这个问题。问题是当我设置子树时,我选择了一个现有的文件夹。有一个警告,但我忽略了它。再次设置子树,但键入一个新的文件夹名称(一个还不存在)修复了这个问题。
e0bqpujr8#
尝试在不使用
--squash
的情况下按this stackoverflow question中所述进行拉取。