Git 2.2.0 正式发布下载!

jopen 10年前

git_dkqua.png
Git 2.2.0 正式发布,此版本现已提供下载。更新内容如下:

自 2.1 版本以来的更新  ------------------    Ports     * Building on older MacOS X systems automatically sets     the necessary NO_APPLE_COMMON_CRYPTO build-time option.     * Building with NO_PTHREADS has been resurrected.     * Compilation options have been updated a bit to better support the     z/OS port.      UI, Workflows & Features     * "git archive" learned to filter what gets archived with a pathspec.     * "git config --edit --global" starts from a skeletal per-user     configuration file contents, instead of a total blank, when the     user does not already have any global config.  This immediately     reduces the need to later ask "Have you forgotten to set     core.user?", and we can add more to the template as we gain     more experience.     * "git stash list -p" used to be almost always a no-op because each     stash entry is represented as a merge commit.  It learned to show     the difference between the base commit version and the working tree     version, which is in line with what "git stash show" gives.     * Sometimes users want to report a bug they experience on their     repository, but they are not at liberty to share the contents of     the repository.  "fast-export" was taught an "--anonymize" option     to replace blob contents, names of people, paths and log     messages with bland and simple strings to help them.     * "git difftool" learned an option to stop feeding paths to the     diff backend when it exits with a non-zero status.     * "git grep" learned to paint (or not paint) partial matches on     context lines when showing "grep -C<num>" output in color.     * "log --date=iso" uses a slight variant of the ISO 8601 format that is     more human readable.  A new "--date=iso-strict" option gives     datetime output that conforms more strictly.     * The logic "git prune" uses is more resilient against various corner     cases.     * A broken reimplementation of Git could write an invalid index that     records both stage #0 and higher-stage entries for the same path.     We now notice and reject such an index, as there is no sensible     fallback (we do not know if the broken tool wanted to resolve and     forgot to remove the higher-stage entries, or if it wanted to unresolve     and forgot to remove the stage #0 entry).     * The temporary files "git mergetool" uses are renamed to avoid too     many dots in them (e.g. a temporary file for "hello.c" used to be     named e.g. "hello.BASE.4321.c" but now uses underscore instead,     e.g. "hello_BASE_4321.c", to allow us to have multiple variants).     * The temporary files "git mergetool" uses can be placed in a newly     created temporary directory, instead of the current directory, by     setting the mergetool.writeToTemp configuration variable.     * "git mergetool" understands "--tool bc" now, as version 4 of     BeyondCompare can be driven the same way as its version 3 and it     feels awkward to say "--tool bc3" to run version 4.     * The "pre-receive" and "post-receive" hooks are no longer required     to consume their input fully (not following this requirement used     to result in intermittent errors in "git push").     * The pretty-format specifier "%d", which expands to " (tagname)"     for a tagged commit, gained a cousin "%D" that just gives the     "tagname" without frills.     * "git push" learned "--signed" push, that allows a push (i.e.     request to update the refs on the other side to point at a new     history, together with the transmission of necessary objects) to be     signed, so that it can be verified and audited, using the GPG     signature of the person who pushed, that the tips of branches at a     public repository really point the commits the pusher wanted to,     without having to "trust" the server.     * "git interpret-trailers" is a new filter to programmatically edit     the tail end of the commit log messages, e.g. "Signed-off-by:".     * "git help everyday" shows the "Everyday Git in 20 commands or so"     document, whose contents have been updated to match more modern     Git practice.     * On the "git svn" front, work progresses to reduce memory consumption and     to improve handling of mergeinfo.      Performance, Internal Implementation, Development Support etc.     * The API to manipulate the "refs" has been restructured to make it     more transactional, with the eventual goal to allow all-or-none     atomic updates and migrating the storage to something other than     the traditional filesystem based one (e.g. databases).     * The lockfile API and its users have been cleaned up.     * We no longer attempt to keep track of individual dependencies to     the header files in the build procedure, relying instead on automated     dependency generation support from modern compilers.     * In tests, we have been using NOT_{MINGW,CYGWIN} test prerequisites     long before negated prerequisites e.g. !MINGW were invented.     The former has been converted to the latter to avoid confusion.     * Optimized looking up a remote's configuration in a repository with very many     remotes defined.     * There are cases where you lock and open to write a file, close it     to show the updated contents to an external processes, and then have     to update the file again while still holding the lock; now the     lockfile API has support for such an access pattern.     * The API to allocate the structure to keep track of commit     decoration has been updated to make it less cumbersome to use.     * An in-core caching layer to let us avoid reading the same     configuration files several times has been added.  A few commands     have been converted to use this subsystem.     * Various code paths have been cleaned up and simplified by using     the "strbuf", "starts_with()", and "skip_prefix()" APIs more.     * A few codepaths that died when large blobs that would not fit in     core are involved in their operation have been taught to punt     instead, by e.g. marking a too-large blob as not to be diffed.     * A few more code paths in "commit" and "checkout" have been taught     to repopulate the cache-tree in the index, to help speed up later     "write-tree" (used in "commit") and "diff-index --cached" (used in     "status").     * A common programming mistake to assign the same short option name     to two separate options is detected by the parse_options() API to help     developers.     * The code path to write out the packed-refs file has been optimized,     which especially matters in a repository with a large number of     refs.     * The check to see if a ref $F can be created by making sure no     existing ref has $F/ as its prefix has been optimized, which     especially matters in a repository with a large number of existing     refs.     * "git fsck" was taught to check the contents of tag objects a bit more.     * "git hash-object" was taught a "--literally" option to help     debugging.     * When running a required clean filter, we do not have to mmap the     original before feeding the filter.  Instead, stream the file     contents directly to the filter and process its output.     * The scripts in the test suite can be run with the "-x" option to show     a shell-trace of each command they run.     * The "run-command" API learned to manage the argv and environment     arrays for child process, alleviating the need for the callers to     allocate and deallocate them.     * Some people use AsciiDoctor, instead of AsciiDoc, to format our     documentation set; the documentation has been adjusted to be usable     by both, as AsciiDoctor is pickier than AsciiDoc about its input     mark-up.      Also contains various documentation updates and code clean-ups.
更多内容请看发行说明


Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如,X.org 最近就迁移到 Git 上来了,很多 Freedesktop.org 的项目也迁移到了 Git 上。

Git与CVS的区别

  • 分支更快、更容易。

  • 支持离线工作;本地提交可以稍后提交到服务器上。

  • Git 提交都是原子的,且是整个项目范围的,而不像 CVS 中一样是对每个文件的。

  • Git 中的每个工作树都包含一个具有完整项目历史的仓库。

  • 没有哪一个 Git 仓库会天生比其他仓库更重要。


来自:http://www.oschina.net/news/57420/git-2-2-0