首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Git不检测重命名?

为什么Git不检测重命名?
EN

Stack Overflow用户
提问于 2016-10-15 11:59:27
回答 2查看 1.9K关注 0票数 1

环顾四周,我发现使用git mv进行重命名会使Git能够检测重命名,但在我的Git (2.7.4)中,它似乎不起作用。

以下是我所做的:

代码语言:javascript
复制
 ~ $ mkdir git_tests
 ~ $ cd git_tests/
 ~/git_tests $ git init
Inizializzato un repository Git in /home/git_tests/.git/
 ~/git_tests $ echo "hello" > readme
 ~/git_tests $ git add readme 
 ~/git_tests $ git status
Sul branch master

Commit iniziale

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   readme

 ~/git_tests $ git mv readme leggimi
 ~/git_tests $ git status
Sul branch master

Commit iniziale

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   leggimi

我遗漏了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-15 12:02:37

因为你还没提交文件。只有当文件已经被跟踪时,git才会以不同的方式对待重命名/文件移动--在本例中,不是这样的,所以它仍然会把它当作一个新的文件。

不管在本例中如何移动/重命名,readme/leggimi仍然是一个新的、未跟踪到git的文件,因此它将被视为是这样的。

票数 2
EN

Stack Overflow用户

发布于 2016-10-15 12:05:02

作为对其他答案的补充:使用git mv并不能帮助Git检测重命名。Git在事后使用启发式方法检测它们,所以使用git mv old newgit rm --cached old; mv old new; git add new做同样的事情。

(当然,如果您在old中进行了未分阶段的更改,即如果文件已更改,则没有在索引中分阶段进行。)然后,git mv old new将跟踪该文件,并保持未分阶段的更改,而git add new则将完成所有更改)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40058746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档