2016-07-07 40 views
3

我有一个我正在研究的Python项目。我一直在研究两台不同的机器,最近我发现我的一半文件使用了制表符,另一半使用了空格。格式更新是一个轻浮的Git提交?

当我试图从另一台机器上编辑和运行一个文件时,Python反对这一点,所以我想将所有内容切换到空格而不是制表符。但是,这看起来像是浪费了Git提交 - 在未提交但正确的文件上运行'git diff'使得它看起来像是在消灭并替换整个文件。

有没有办法解决这个问题?也就是说,有什么方法可以“隐藏”这些(IMO)轻浮的变化?

+2

纯粹是我的看法,但是一个格式更改的提交确实*值得*成为一个真正的提交,它本身带有一个提交消息,说明它为什么存在(“将所有内容切换到空格;没有代码或行为改变“ 或类似的东西)。 – torek

+0

我同意@torek。格式更改,特别是从制表符到空格,应该是它自己的提交。我经常为github上的大型项目做出贡献,并且我已经合并的一些pull请求不如此重要(例如,我今天制作了一个python文件'pep-8'),所以我会做出真正的承诺。 –

+0

@torek - 让这个评论成为答案,我会接受它(在Kaz的答案出现之前大约一分钟,这也是有帮助的)! – tonysdg

回答

5

有,它被称为rebase - 但是,你可能想要追溯每个文件中添加空格在你编辑该文件的每个提交,这将是非常乏味。

然而,这样的提交没有任何问题。一个提交代表一个改变你的项目的独特功能状态,并用空格替换标签绝对是一个独特的状态。

一个地方,你想要使用rebase是如果你不小心做了非功能性提交。例如,你可能只提交了一半你需要的文件。

最后一件事:一旦将更改推送到另一台机器,就不会编辑历史记录(即使用rebase)。这些机器将不同步,并且您的回购将开始缓慢爆炸。

+0

虽然是一个很好的答案,但您不应该强制要求提交必须是“功能”状态。在许多情况下,拥有非功能代码状态是完全可以接受的。 (只要你不打破某人依赖的现有代码)。例如,在我工作的一个大型项目中,我们有一个功能分支仓库布局。每个问题都有自己的分支,针对该问题的提交在那里完成,然后合并到主干。虽然我们不得不担心合并状态正常工作,但分支提交不需要起作用。 –

+0

这可以带来许多好处,例如更详细的时间表,进度跟踪和团队协作。 –

3

不幸的是,在文本层面上,这是一个很大的变化。您所能做的最好的事情不是将空白变化与任何其他变化混合在一起。这种提交的主题应该只是空白的改变。

如果这个搞砸是不公开的(只有在你的私人仓库里),你可以回到过去并且在它被引入的时候解决历史中那个时间点的混乱,然后经历修复后续改变的痛苦(必须以正确的缩进样式重新工作)。为了努力,你最终会有一个清晰的历史。

0

这是完全有效的。将白色空间重新格式化与同一文件中的其他更改耦合可能会混淆非空白空间更改。承诺有一个单一的责任来重新格式化空白。