首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git-mv显示文件已删除

git-mv显示文件已删除
EN

Stack Overflow用户
提问于 2012-03-07 23:25:11
回答 2查看 1.5K关注 0票数 4

当我运行git-mv file1 file2时,我会像我期望的那样将文件从file1移到file2。不过,有时我的git status会给我“奇怪”的输出。

当我运行git-mv f1 f2,然后是git status

代码语言:javascript
复制
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   renamed:    f1 -> f2

这就是我所期望的。不过,其他时候,在我提交了f2之后,我得到了:

代码语言:javascript
复制
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage) 
#
#   deleted:    f1

这通常发生在我提交了新文件之后。我不知道为什么会发生这种情况--它似乎是随机发生的(因为通常我会收到renamed: f1->f2消息,就像我预期的那样)。

我想知道为什么有时我会收到消息说我在运行git mv之后删除了该文件,以及我会经历哪些步骤来生成这个文件--我只是尝试复制,并得到了renamed:..;但是10分钟前,我在一个文件上得到了一个deleted:...,在此之前大约10分钟,我已经编辑了一个git-mv。这让我很困惑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-07 23:31:38

听起来您将f1重命名为f2,但只提交了添加f2而没有删除f1。如果使用git mv f1 f2,然后键入git commit f2,则可能会发生这种情况;如果键入mv f1 f2,然后执行类似于git add .; git commit的操作,则可能会发生这种情况。

票数 5
EN

Stack Overflow用户

发布于 2012-03-07 23:35:25

Git不像Subversion那样跟踪文件历史中的移动:历史只存储内容,git log &c。查看文件内容和更改,推断更改是否为重命名。因此,git mv f1 f2相当于:

代码语言:javascript
复制
mv f1 f2
git rm f1
git add f2

对于Git而言,删除f1和添加f2是完全不同的更改,因此如果现在执行git commit f2,则只提交添加的f2,而f1的删除仍然是未提交的更改。要确保提交这两个更改,请执行没有参数的git commit来提交所有内容,或者git commit f1 f2只提交对这两个文件的更改,或者使用git commit --interactive或其他工具以更复杂的方式编辑索引。(索引是“要提交的更改”的列表。)

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

https://stackoverflow.com/questions/9610727

复制
相关文章

相似问题

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