大多数人不会把版本控制称为他们的爱好。但在过去几年里,人们也意识到了它的价值。如今,你找不到一个不使用版本控制的顶级程序员、网页开发人员或网页设计师。部分原因在于它可以帮助你获得更好的结果并简化协作。但也因为它可以在事情出错时拯救你的工作。
当我们在 2010 年开始创建 Tower 时,我们的目标非常明确:使 Git(最好的版本控制系统)更易于使用。从那时起,我们已经为超过 35,000 位客户(包括 Apple、Google、Amazon 和 Ebay 等公司)做到了这一点。
当我们开始开发 Tower 的第 2 版时,我们知道这是一个更进一步的机会:让 Git 不仅更容易使用,而且真正简单易用。
如何自信地解决冲突
合并冲突一直让我害怕。特别是因为我是一个“不太技术性”的人。我从未真正理解发生了什么——更重要的是,我该如何解决它。
我对冲突的主要问题之一是,这种情况非常抽象且难以理解。这就是为什么我们在 Tower 2 中引入了一种可视化的方式来解决冲突。
因此,我现在可以更轻松地理解情况——通过清楚地看到哪些文件发生了冲突,它们的确切外观,谁处理了它们以及哪个提交引入了这些更改。然后,我可以决定解决方案的外观——只需点击我想要在最终结果中包含的文件即可。

如何立即克隆存储库
我不喜欢克隆存储库。因为,虽然它实际上是一个简单的过程,但它也是一个乏味的过程:首先,我必须登录到 GitHub、Bitbucket 或 Beanstalk 上的服务帐户。麻烦就从那里开始:好像笨拙地处理用户名和密码还不够,新的身份验证程序现在需要在你的手机上创建密码、生成个人访问令牌或跳过各种其他障碍。之后,我必须找到我的存储库并复制正确的 URL——必须从 ssh、https 或 git URL 等各种选项中进行选择。
Tower 2 中的新服务帐户管理器允许我一次配置我在 GitHub、Bitbucket 和 Beanstalk 上的帐户——然后再也不用处理身份验证和存储库 URL 了。

我现在可以在这些帐户中获得所有存储库的整洁列表。我可以只需单击一下即可将存储库克隆到我的本地机器。或者,直接在 Tower 中在帐户中创建一个新的存储库。
最重要的是:我再也不用与用户名、密码、令牌或 URL 搏斗了。
如何了解项目中发生了什么
任何项目都是以小步骤发展起来的。如果我想跟上项目,我需要理解的就是这些小步骤。因此,对我来说至关重要的是,我能够以一种易于理解的方式获得我需要的所有信息。在 Tower 的新版本中,我们对所有历史记录都投入了相当多的精力。
你可以看到从远程拉取时将收到的提交——这样你就可以清楚地了解最终执行拉取操作时会发生什么。

你可以选择多种不同的视图样式——这样你就可以获得最适合你的可视化效果。

你可以直接访问提交的文件树——这样你就可以在任何时间点检查项目的所有文件。

最后,搜索功能现在支持文件路径——这样你就可以轻松地查看仅更改了特定文件的提交。

如何撤消错误
我对错误的态度发生了变化——尽管我犯的错误和以前一样多。发生变化的是,我不再像以前那样害怕它们。过去,我对在项目上进行较大更改或尝试新事物犹豫不决。因为我知道如果发生错误,很难从错误中恢复。
使用 Git 一段时间后,我开始理解我可以撤消所有操作。Git 的撤消功能允许你从任何错误中恢复——但相应的命令分散在整个系统中。
在 Tower 中,我们使这些功能非常容易使用:我可以修复我的最后一个提交、恢复任何历史版本、撤消特定提交的影响或丢弃工作副本中的本地更改。知道我不会搞砸真是太好了。
如何创建有意义的提交
当我开始使用 Subversion 进行版本控制时,我基本上滥用它作为备份系统:我把所有更改都塞进一个提交中,以确保它们安全地存储在存储库中。因此,我的提交消息是这样的
修复了错误 #312,实现了登录功能,重构了导航。哦,顺便说一下,还更改了其他所有内容……
当队友(甚至我自己)查看这个臃肿的提交时,我们谁也不知道到底发生了什么。
那时我还没有理解版本控制。公平地说,我当时也没有合适的工具。使用 Git,我了解到浏览项目的提交历史应该能够让你看到项目是如何演变的。但这只有在一个条件下才能奏效:只有相关的更改应该一起提交。
例如,修复两个不同的错误应该产生两个单独的提交。小的提交使其他开发人员更容易理解更改并在出现问题时回滚它们。
Git 使用“暂存区”等工具帮助创建此类粒度提交:它强迫我真正制作提交并确定我确切要包含哪些更改。我甚至可以在更改的单行级别上决定此修改是否应包含在下一个提交中。
但是,特别是像后者这样的操作在命令行上使用起来相当笨拙。这就是 Tower 发挥作用的地方,它使用简洁的界面使这些强大的功能易于访问。

如何优化你的工作流程
使用 Git 可能很复杂。但是,通过使用它而获得的质量、信心和可靠性的提高绝对值得付出努力。减少这种努力正是我们想要通过 Tower 2 做到的。我们希望使使用 Git 更快更容易。让我们来看一些 Tower 中体现这一点的例子。
- 你无需手动下载项目的新的更改。相反,Tower 现在会在后台自动定期执行“获取”操作。这样,你就可以立即知道远程服务器上是否有新内容可用。
- 当你切换分支、拉取或变基时,应用程序会自动将你当前的更改保存到 Stash(一种剪贴板)。最好使用干净的工作副本执行此类操作——而 Tower 可以帮助你免除记住和执行此操作的麻烦。
- 新的“快速打开”对话框允许你在几秒钟内找到并打开任何项目。在键入项目名称的几个字符后,Tower 将为你提供任何匹配的存储库。
- 我们使提交速度更快。提交消息的 UI 现在已整洁地集成到主界面中;只需按住 ALT 键即可修改提交。
- 根据大众需求,我们已将“git-flow”工作流程集成到 Tower 中。git-flow 粉丝现在可以直接在 Tower 中使用它。
- 你可以在 Tower 中使用拖放来非常简单地完成相当复杂的 Git 任务:从创建和合并分支到挑选提交或应用甚至 Stash 的部分内容。
我们在 Tower 2 中实现了相当多的新功能。但最重要的是,我们专注于易用性:我们相信,一个好的工具应该可以轻松地帮助你成为一名更好的专业人士。
我使用 SourceTree;它是免费的,而且很好用。在我刚开始使用它时,据我所知,Tower 没有树形视图,但现在有了,这很好。
请,Günther 先生,不要取笑我 :-) 我在 Windows 上工作(不是我的选择;我们是一家 Windows 公司),我一直在苦苦寻找一个真正优秀的 Git 客户端。我渴望拥有 Windows 版本的 Tower 很长时间了……SourceTree 当然比命令行工具或 msysgit 附带的 GUI 工具更好,但有一些地方会引入足够的摩擦,使代码管理稍微有点烦人。
所以,任何时候你们想开始将 Tower 移植到 Windows 上,我都会准备好我的钱。
我赞同……请发布 Windows 版本……
谢谢,Paul 和 Michael!Windows 版本确实并非完全不可能。我建议您注册我们的免费(且非常不频繁)的时事通讯,以确保在它成为现实时听到这个好消息……
http://www.git-tower.com/newsletter
不是一个完整的解决方案,但如果您尝试使用 Brackets 编辑器,您可以尝试 Brackets Git,这是一个很棒的 Git 扩展,允许您管理几乎所有关于 Git 的内容。
@Fez:这是一个不错的 UI。现在为什么所有 Git UI 不能都这么简单……即使我不使用 Brackets,我也很想尝试一下,仅仅作为一个 Git 工作流工具。
好吧,Linus 应该完成 git。我的意思是添加命令并重构旧的命令,以便普通用户(非黑客)可以使用它的全部潜力。当你用到高级功能时,它会让人感到非常困惑。就像 Linux 一样,它从未完成过 -)
非常棒的动画 GIF!您能否分享一些关于您如何制作这些 GIF 的技巧?
谢谢,很高兴听到您喜欢它们。我们使用“LICEcap”制作了它们:http://www.cockos.com/licecap/
谢谢,Tobias!LICEcap 看起来很棒——迫不及待地想尝试一下!
对此我感到抱歉
它看起来不错,但我认为它来得太晚了。现在有 sourcetree 了,它适用于 Mac 和 Windows,而且是免费的——这篇文章没有给我任何切换的理由。
Windows 上的 Sourcetree 没有 Mac 版本那么井井有条。它也丑陋得令人发指。如果有一个 Windows 版本的 Tower 选择尽可能地与 Mac 版本匹配,而不是毫无理由地与 Mac 版本不同(仅仅因为它是在 Windows 上),那么我肯定会使用 Windows 版的 Tower,但在 Mac 上可能仍然会坚持使用 Sourcetree。
我很高兴您喜欢 SourceTree;它对我来说有一些摩擦点,使用起来有点不愉快。我认为它是所有 Windows Git 客户端中设计最合理的一个,但有些事情会让人感到稍微有点沮丧——比如它每次我提交一行代码时都会忘记工作副本文件的排序顺序。
您好,
这太棒了。如果我是免费更新期间的成员之一,我早就开始使用了。我认为所有新闻都很好,但我认为您让它看起来更像“SmartGitHG”,这是一个很酷的 Windows 版 Git;对于所有正在寻找一个的人来说。
此致,
Ian
网站(带电子邮件签名生成器):https://www.liebdich.com。
Github:https://github.com/DocAsarel。