4

我正在尝试将一些 Javascript 文件转换为 TypeScript 文件。我已将我的move.js文件重命名为move.ts我的 IDE(本例中为 VSCode)并使用 TSC 编译以检查一切是否正常。现在我想提交我的更改。

我不知道如何让 SourceTree 和/或 Git 明白:

  1. 我的原始文件已重命名;
  2. 该文件(带有新名称)有一些变化;
  3. 创建了一个具有原始文件名的文件;

这甚至可能吗?如何使用 SourceTree(或失败,git 命令行工具)来指示此状态?它需要两个单独的提交吗?

以下是 SourceTree 显示的状态:

源树状态

如果我按原样暂存这些文件,它将作为编辑+添加提交,这是我不想要的。

以下是git status报告内容:

On branch TypeScriptConversion
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

  modified:   src/js/domain/move.js

Untracked files:
  (use "git add <file>..." to include in what will be committed)

  src/js/domain/move.ts

no changes added to commit (use "git add" and/or "git commit -a")

如何告诉 SourceTree 和/或 git 我的文件已被重命名、编辑,并在其位置输入了同名的新文件?

4

2 回答 2

4

分开提交:在一次提交中进行重命名,然后在第二次提交中添加原始文件的替换。

于 2016-02-28T15:46:50.937 回答
1

只是添加到上面的答案(在 2020 年):如果只有少数或一定百分比的行相同,它似乎确实会检测到重命名 - 但当然,如果您想要保证某些东西,请分两步执行(如上面推荐的答案中所述)。

更重要的一件事:确保同时将两个项目放在一起,以增加 ST 将差异检测为正确重命名的机会;我自己和同事都观察到,如果您不小心只暂存新文件,无论更改多么微不足道,它都会检测到旧文件已删除。当它们一次完成一个文件时,甚至有可能将完全相同的文件错误地标记为删除/添加。我不确定这是在内部通过 git 本身还是通过 ST 添加此功能(因为我认为在 git 中不会智能地检测重命名),但如果您知道,任何人都可以随时在评论中详细说明

于 2020-08-04T15:19:42.623 回答