Git 让SourceTree检测重命名,即使原始文件仍保留
我正在尝试将一些Javascript文件转换为TypeScript文件。我已经在IDE中将我的Git 让SourceTree检测重命名,即使原始文件仍保留,git,sourcetree,Git,Sourcetree,我正在尝试将一些Javascript文件转换为TypeScript文件。我已经在IDE中将我的move.js文件重命名为move.ts(本例中为VSCode),并使用TSC编译以检查是否一切正常。现在我想提交我的更改 我不知道如何让SourceTree和/或Git理解: 我的原始文件被重命名;及 该文件(使用其新名称)有一些更改;及 创建了一个具有原始文件名的新文件 这可能吗?我如何使用SourceTree(或者如果不使用,则使用git命令行工具)来指示此状态?它需要两个单独的提交吗 以下是So
move.js
文件重命名为move.ts
(本例中为VSCode),并使用TSC编译以检查是否一切正常。现在我想提交我的更改
我不知道如何让SourceTree和/或Git理解:
git状态
报告:
分支类型转换上的
未为提交而暂存的更改:
(使用“git add…”更新将提交的内容)
(使用“git签出--…”放弃工作目录中的更改)
修改:src/js/domain/move.js
未跟踪的文件:
(使用“git add…”包含在将提交的内容中)
src/js/domain/move.ts
未向提交添加任何更改(使用“git add”和/或“git commit-a”)
如何告诉SourceTree和/或git我的文件已重命名、编辑,并在其位置输入了一个同名的新文件?分开提交:在一次提交中重命名,然后在第二次提交中添加替换原始文件的内容。只是为了补充上述答案(2020年):如果只有几行或某个百分比的行相同,它似乎会检测到重命名。但是,如果您希望得到某种保证,请分两步执行(如上面推荐的答案中所述)
还有一件更重要的事情:确保您同时将两个项目放在一起,以增加ST正确地将差异检测为重命名的机会;我和同事都注意到,如果您只是意外地暂存了新文件,那么无论更改多么微不足道,它都会将旧文件检测为已删除。当一次只删除一个文件时,完全相同的文件甚至可能被错误地标记为delete/add。我不确定这是通过git本身内部实现的,还是通过ST为该功能添加的(因为我不认为在git中智能地检测重命名),但任何人都可以随意在评论中详细说明,如果你知道,换句话说:你不能在一次提交中重命名和编辑替换文件,同时保留文件重命名的信息。我刚刚通过分别做这些步骤,然后挤压它们,学到了同样多的东西。我会听从你的建议,改为使用两个提交。是的,这是正确的-基本上,如果文件仍然以其原始名称存在,那么它在技术上已经更改(即使100%更改),而不是重命名。没有--“是的,但不,这不是我的意思”为此打开重命名:)我在Sourcetree中找不到“重命名”命令,所以这一定意味着您指的是文件重命名。但这将是在Sourcetree中添加“新”文件的第一步。所以我的问题是:“重命名”和“添加”两个不同的操作/步骤是什么?