13

我有两个本地分支机构masterdev. 两个分支都包含三个文件夹:

projectBeta
project
project_v1

我只想保留projectBeta并删除projectproject_v1然后重命名projectBetaproject. 所以这就是我在两个分支上分别做的事情,我一直在做。在我尝试将dev分支合并到 master 之前,一切看起来都很好,我得到了一堆这样的错误:

CONFLICT (rename/delete): Rename projectBeta/test.c->project/test.c in dev and deleted in HEAD
CONFLICT (rename/delete): Rename project_v1/test.c->project/test.c in HEAD and deleted in dev

所以看起来 Git 在不同的分支中以不同的方式跟踪重命名。

如果我做 a git status,我会得到

# On branch master
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   added by us:        project/test.c
#
no changes added to commit (use "git add" and/or "git commit -a")

我不明白的第一件事是,当合并报告说它被我们和他们重命名和删除时,为什么状态只是说它是“我们添加的”?

其次,我想使用test.c的dev分支版本(它们),但是现在当我尝试

git co --theirs project/test.c

我明白了

error: path 'project/test.c' does not have their version

...所以我不知道如何确保合并将使用 dev 分支中的内容?

最后,有没有一种最佳实践方法可以避免将来出现这样的混乱局面?基本上,在内容尚未准备好首先合并的分支中独立更改文件夹结构......

4

2 回答 2

2

尝试这个

git pull

去文件夹删除项目和project_v1,将projectBeta重命名为project。

git add --all
git commit 
git push

你对其他分支做同样的事情

于 2014-06-10T08:25:52.417 回答
2

你需要的是git mvgit rm

我的猜测是你可能在不让 git 知道的情况下 rm 了目录。您必须让 git 知道,因为它会跟踪所有文件夹并且需要知道如何正确处理它们。

你应该做的是:

git rm -r project
git rm -r project_v1
git mv projectBeta project
于 2011-09-03T02:46:08.067 回答