开发者之间的Git版本差异

5
如果我安装的GIT版本是1.9.4,而服务器上的仓库使用的是1.8.2,会出现问题吗?使用不同版本的GIT有没有问题?团队中的每个人是否应该具有相同的版本,或者这并不重要?
在文档中找不到相关信息,感谢您的帮助。
1个回答

9

1.9.4和1.8.2非常接近,但是不同的git版本之间可能存在一些问题,主要是行为不同。

如果您想知道发生了什么变化,可以检查git存储库(https://github.com/git/git)。
将其克隆到本地,并在Documentation/RelNotes目录中搜索“compatibility”(您可以针对1.8和1.9版本):

git clone git@github.com:git/git.git
grep "compatibility" Documentation/RelNotes/1.[89]* -n

文档/RelNotes/1.8.0.txt:4:向后兼容性说明
文档/RelNotes/1.8.1.txt:4:向后兼容性说明
文档/RelNotes/1.8.2.txt:4:向后兼容性说明(此版本)
文档/RelNotes/1.8.2.txt:25:向后兼容性说明(Git 2.0)
文档/RelNotes/1.8.3.txt:4:向后兼容性说明(Git 2.0)
文档/RelNotes/1.8.4.txt:4:向后兼容性说明(Git 2.0)
文档/RelNotes/1.8.5.txt:4:向后兼容性说明(Git 2.0)
文档/RelNotes/1.9.0.txt:4:向后兼容性说明
文档/RelNotes/1.9.0.txt:30:向后兼容性说明(Git 2.0.0)

您只需要关注1.8.3及以上版本,可以看到大多数兼容性问题都涉及Git 2.0。唯一有趣的一行是这一行:

文档/发行说明/1.9.0.txt:4:向后兼容性说明

如果您查看 1.9.0.txt,您会看到:

  • git submodules foreach $cmd $args 的行为已经得到增强
  • 松散对象格式已被删除
  • git fetch --tags 的行为已更改
  • git push $there $what 已得到增强
  • repo-configtar-treelost-foundpeek-remote 已被删除

没有什么可担心的,但是请注意 git fetch --tags 的更改,您不应该有任何兼容性问题。无论如何,请仔细阅读完整文本:

向后兼容性说明

"git submodule foreach $cmd $args" 以前的处理方式与 "ssh" 相同,将 "$cmd $args" 连接成单个字符串,并让 shell 取消引用。不小心忘记足够引用 $args 的用户会因此在 $IFS 空格处分割参数,并因此得到意外结果。从这个版本开始,如果命令有参数,则直接传递给 shell。

对于实验性松散对象格式的只读支持已经被删除,在 v1.4.3 和 v1.5.3 时代之间,用户可以选择为短时间编写它们的松散对象。

"git fetch" 的 "--tags" 选项的含义已经改变;该命令获取标签 除了 不带该选项的同一命令行所获取的内容。

当 "git push $there $what" 在命令行上没有明确告诉我们要更新哪个 $there 存储库中的引用时,它解释给定的 $what 部分的方式已经得到增强。

一些长期被废弃的古老命令(repo-config、tar-tree、lost-found 和 peek-remote)最终被删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接