即使原始文件仍然存在,SourceTree也会检测重命名

时间:2016-02-28 15:44:35

标签: git sourcetree

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

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

  1. 我的原始文件已重命名;
  2. 该文件(带有新名称)有一些变化;
  3. 创建了一个带有原始文件名称的 new 文件;
  4. 这甚至可能吗?我如何使用SourceTree(或失败,git命令行工具)来指示此状态?它需要两个单独的提交吗?

    这是SourceTree为状态显示的内容:

    SourceTree status

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

    这是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我的文件已重命名,编辑过,并且在其位置输入了同名的 new 文件?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

只需在上面的答案中添加一个答案(在2020年):似乎只有少数几行或一定百分比的行是相同的,它的确会检测到重命名-但是,如果您希望得到保证,可以这样做分两步进行(如上面建议的答案中所述)。

另一件重要的事情:请确保同时将两个项目一起上演,以增加ST正确检测到差异作为重命名的机会;我本人和同事都观察到,如果您不小心仅暂存了新文件,则无论更改有多么微不足道,它都会检测到已删除的旧文件。甚至完全相同的文件一次完成一次也可能被误标记为删除/添加。我不确定这是在内部通过git本身还是通过ST来添加此功能(因为我认为git中不会智能地检测到重命名),但是如果您知道anyone < / p>