git与没有git-mv的移动文件合并

时间:2015-03-13 22:33:58

标签: git

以前我错误的是在分支时不使用git-mv,现在我有一个问题将分支合并回来。

在git-merge之后,当我运行git-status时,我得到:

....
deleted:    __init__.py
deleted:    __main__.py
deleted:    config.py
....
new file:   mose/__init__.py
new file:   mose/__main__.py
new file:   mose/config.py
new file:   mose/elliptic_fibration.py
....
deleted by them:    elliptic_fibration.py

但我希望将同名文件标记为“重命名”。有没有办法实现这个目标?

====

补充说明我的情况:

我希望将它们视为重命名的原因'是因为我希望我的协作者在将其分支合并到主分支时正确合并不同分支中的那些文件所做的更改。

如果我在将我的分支合并到主分支时调整合并阈值,以便文件看起来被重命名,'当我的合作者试图在没有任何额外工作的情况下进行合并时,它会如我预期的那样工作吗?

1 个答案:

答案 0 :(得分:1)

Git实际上并不跟踪移动的文件;如果存在已删除的文件和具有相同或类似内容的新文件,它只会检测您何时执行diff,log或blame,并将其视为重命名。这些命令有几个选项可以确切地确定文件的相似程度,以便被视为彼此重命名(以及它看起来有多难),例如-M来查找重命名,{{1}找到副本,-C

您不一定会在--find-copies-harder中看到此内容,但如果您查看git status(或可能git diff --stat -M),则会显示此内容。

执行合并时,它还会尝试检测重命名,并根据重命名智能合并,但您可以通过传递git diff --stat --cached -M选项来调整此行为,以便为类似文件的设置方式设置不同的阈值在它认为它们重命名之前。