【发布时间】:2015-08-15 00:00:06
【问题描述】:
我是团队中的新程序员。在我的第一天,我将这个重命名的文件放在一个阶段,准备好由 git 提交:
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: .gitignore
new file: reports/SQLS.rar
renamed: account/enter_rules.php -> enter_rules.old.php
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: account/enter_rules.old.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
account/enter_rules.php
对于前 2 行,我没有问题。我知道发生了什么事。但是对于最后一个重命名:,我不确定应该怎么做。系统运行良好。
在我的工作目录中:
account/enter_rules.php
我找不到 enter_rules.old.php 文件。
似乎其他程序员已经从该文件创建了一个副本,将实际命名为 .old,进行了一些测试和新代码,然后暂存更改并忘记提交。比他手动删除了old.php
处理这种情况的最佳方法应该是什么?我想在开始处理它并进行自己的更改之前将 git status 明确。
我找到了这篇文章,但我不确定在我的情况下是否应该或可以提交。 Handling file renames in git
在阅读了所有建议后,这对我很有帮助,这就是我所做的:
- 我刚刚从文件
enter_rules.php复制了一份(仅用于安全) - 我“告诉” git(到 INDEX)文件名已更改。
$git commit -m "committing name changes"。此时 git 不知道 .old 已被删除。 - 然后我输入
$git rm "account/enter_rules.old.php"来解决这一行:Changes not staged for commit:。与我们使用$git add .来“告诉” git 跟踪<file>的方式相同,我们应该使用$git rm <file>来“告诉” git 忘记这个<file>。 - 然后我输入
$git status并收到绿色消息:deleted: account/enter_rules.old.php. 所以我应该告诉索引,.old 文件已被删除。我输入了$git commit -m "committing delete changes" - 现在 git 知道 enter_rules.php 被重命名为 enter_rules.old.php 然后 enter_rules.old.php 被删除(删除)。
- 然后我解决了最后一行(Untracked files:)。我只是告诉 git 创建了一个新文件并调用 enter_rules.php。我按原样添加并提交。
所有建议都帮助我解决了这个问题,所以我会尽量做到公平,并将支票交给没有意义的人。
【问题讨论】:
-
这很奇怪。根据您所说的和
git status显示的内容,听起来您的同事运行git mv enter_rules.php enter_rules.old.php然后将该文件复制回enter_rules.php?他为什么要这么做? -
只是为了清楚。你不需要需要
enter_rules.old.php,但你确实需要account/enter_rules.php,对吗? -
您好 Decave,我已更改信息。我应该粘贴所有 git 输出。似乎他已经从文件中创建了一个副本并命名为 .old.php 。比他对代码做了一些更改。也许它奏效了。然后他删除了 .old 文件并添加到舞台上。我不知道到底发生了什么。但是现在我遇到了你在输出 git 中看到的这种情况。
-
是的。该系统现在正在运行。一切都是好的。但我需要清理工作目录才能开始我的工作。
-
您的同事为什么在您的存储库中工作?您是否共享存储库的实例?
标签: git file-rename