Git在Windows上有哪些局限性?

Jun*_*ter 23 git version-control msysgit

我读到Mercurial和Git的所有地方,他们通常会抛出一两行,这意味着Git在Windows上的能力有限(因为有些Shell程序无法移植等等),但我从未遇到过明确提及它们的页面.而且大多数页面都有点旧.

Git在Windows上的功能有哪些限制?是否必须在MinGW上运行Git和Windows上的MSYS有性能限制?

Cal*_*ngh 27

编辑:所以它是2016年,距我写下面的原始答案已经六年了.我已经使用git和mercurial已经好几年了,而且我已经用mac开发了好几年了.我对命令行中的git使用非常熟悉和熟悉,但对于日常工作,我使用Atlassian的SourceTree.这不是广告,只是更新此答案的注释.SourceTree是一个双重抽象:与git/hg相同的ui,以及与Windows/Mac相同的ui.当您必须经常切换平台和项目时,这变得非常有吸引力.

编写了一个在Windows上为Git设置客户端和服务器的指南,我非常清楚人们可以期待什么.此外,我的主存储库(.git文件夹)是大约260MB的源代码,因此对于Windows上的日常Git工作来说,这实际上并不是一个简单的性能测试.

我的总体印象是,对于绝大多数可能遇到的情况,Windows上的Git非常快,其中一个非常大的例外:git gui blame -C -C.默认情况下,git不会责怪文件重命名边界之外的文件,并且-C -C必须传递额外的参数才能使其发生,但事情确实会变慢.现代硬件需要17分钟才能生成一个较大的~20 kloc源文件的完整注释.这种延迟真的可以打破你的注意力.

关于cygwin:

我只试过一次,而不是有意义的.我真的想要一个原生解决方案.从各方面来看,cygwin上的git运行良好.

关于TortoiseGit

Frank Li做了大量的工作,将现在熟悉的用户界面带到了Git世界.TortoiseGit启动非常快,因为大多数UI都可以从TortoiseSVN(以及其他工具,如TortoiseMerge)获得,我已经使用了很多这个界面.一般来说,如果您熟悉TortoiseSVN,它可以让您快速使用Git.开发人员非常痛苦地使用TortoiseSVN世界中的术语并将它们映射到git命令.例如,一个revert确实执行了一个git checkout <file>引擎盖.

一般来说,以这种方式与Git合作是非常无缝的,我必须承认在使用TortoiseGit界面时学习了Git:必须承认这是我的教育的障碍.像TortoiseSVN这样的日志查看器并不适用于分布式vcs工作流程(它使用Git就好像它是SVN一样),你只能在以后找到它,因为问题只有在有很多时才会出现,许多开发分支(gitk工具很多更好地处理这个显示器).而另一个问题是即使在使用TortoiseGit好几个月后,我仍然不知道最基本的git命令.TortoiseGit没有什么特别的错误,当它们发生时,错误会很快得到修复.主要问题似乎是UI中的设计问题(可能不止一个)gitk,git gui开发人员因为更长的开发历史,或者对惯用的git使用有更深入的了解,或类似的东西,已经解决了这个问题.

关于命令行使用:

MSYS git的开发团队是谁真的应该感谢都懒得做他们所做的所有工作中的人,没有他们的支持,很可能MinGW的混帐分支甚至不会有被合并到主线.

我现在已经开始在Git Bash shell中使用msysgit,作为我几周的唯一git接口.我的印象是,虽然最初的学习似乎更难,但一旦获得知识,其他一切变得更容易. 在我看来,这个引用是在命令行上学习git的更好的参考之一.

作为Windows上的Git用户,以及使用TortoiseGit界面到git的扩展体验,这是我的工作流程的摘要,它涵盖了所需内容的95%以上(全部使用Git Bash,而不是 Windows命令shell( CMD)):

  • 检查修改

    git状态

  • 切换分支

    git checkout some-feature-branch

  • git fetch

  • 显示日志(将进程与shell &分离gitk,以便shell gitk在允许更多命令之前不等待关闭)

    gitk&

  • 提交:要么

    • 简单提交:

      git commit -a -m"这是我的提交消息"

    • 复杂,多次连续提交:

      git gui

  • 推送到分支:主

    git push origin master

  • 合并(例如在获取后)

    git merge origin/master

我还没有做过任何冲突解决方案,但是我会在时机成熟的时候解决这个问题(欢迎评论:).

编辑:为了解决冲突,kdiff3是要走的路.设置很简单,从简单的差异到三向合并的一切都可靠而迅速地完成.

结论

  • Windows上的Git功能齐全,可以像宣传的那样工作,并且不限于Windows.

  • 性能通常非常好,但全面的大责备可能会很慢.

  • TortoiseGit界面很诱人,但最终还是不满意:你应该尝试在命令行上学习git.我已经做到了,这条路线效率更高.

  • Git扩展看起来比TortoiseGit好多了.它可能不是熟悉的用户界面,但它似乎在Windows上非常强大. (4认同)

Von*_*onC 8

  • 可疑的通配符支持:(
    有问题的.gitignore文件)
    发送到底层的特定于操作系统的fnname()方法:看到这个问题那个(或那个)

  • git-svn可能不会很快.
    资料来源:这个答案.尽管如此,它取得了一些进展.

  • PATH要调整的需要,以防止任何冲突的
    一些命令是Windows和在bash之间的相同.(find,cp,rm,...).
    看到这个答案.
    作为cjrh评论,Git for Windows bin默认情况下不会将其目录添加到PATH.

  • 可以进行一些EOL转换(Unix与Windows EOL)
    请参阅设置的最终建议git autocrlf.
    新改进core.eoleol属性从Git1.7.2现在还没有在msysgit.


归档时间:

查看次数:

7006 次

最近记录:

9 年,7 月 前