Git 2.9增加了Merge、Rebase、Commit等新特性

責(zé)任編輯:editor006

作者:Sergio De Simone

2016-06-22 22:04:31

摘自:INFOQ

Git merge和pull的命令將不允許兩個不相關(guān)歷史的分支進(jìn)行合并,除非指定--allow-unrelated-histories選項。Git 2 9中還包含了其他的一些改進(jìn),如更好的檢測文件重命名、更好的處理git日志中的選項卡、和更豐富的git描述(包含算法)。

Git 2.9版本已于近期發(fā)布。它給merge、rebase和commit工作流帶來了新的特性,以及許多其他方面的改進(jìn)和缺陷修復(fù)。

Git merge和pull的命令將不允許兩個不相關(guān)歷史的分支進(jìn)行合并,除非指定--allow-unrelated-histories選項。當(dāng)兩個分支的根提交不一樣時,它們會有不相關(guān)的歷史,比如,當(dāng)兩個分支用于完全不同的目的(如代碼和文檔)時。在這種情況下,git不悄悄地合并無關(guān)歷史是可取的,因為這可能會產(chǎn)生意想不到的后果。在一些“特殊”的情況下可能合并無關(guān)的歷史是必要的,那么可以采用上面提到的--allow-unrelated-histories選項來強制執(zhí)行這種行為。

rebase命令現(xiàn)在支持在非交互模式下使用-x選項。-x(- exec)選項可以用來在每一個rebase的步驟中運行一個給定的命令。例如,可以用來運行單元測試,從而檢查每個rebase提交不會破壞任何東西。以前,這可能僅僅通過傳遞-i選項來完成。同時,也修復(fù)了一個使用git rebase -m命令來rebase一個從根提交開始的分支的缺陷,原來的問題在于它假設(shè)了父提交的存在。

commit命令支持一個新的commit.verbose配置選項,這個選項用來指定默認(rèn)情況下是否為verbose。設(shè)置這個選項和每次在命令行給定--verbose選項是一樣的,它將顯示變化之間的內(nèi)聯(lián)diff。此外,git commit --dry-run過去曾經(jīng)有個問題,即它提示說不能進(jìn)行提交而git commit命令實際上允許提交。在新的版本中它將提供正確的結(jié)果。最后,還修復(fù)了當(dāng)把空消息傳遞給-m選項時導(dǎo)致git commit行為出錯的缺陷。

git clone命令增加了一個新的--allow-submodules選項,它使得克隆一個代碼庫成為可能,然后可以無須獲取整個歷史即可克隆它的所有子模塊,從而加快克隆的速度和效率。

Git 2.9還改進(jìn)了使用hooks的便利性。它允許接入Git任務(wù)(例如commit、merge、rebase和push等等),然后可以定義在這些任務(wù)之前或之后運行的腳本。事實上,一個新的core.hooksPath配置選項允許指定你的hooks所在的目錄:

git config core.hooksPath /etc/git/hooks

以前,git會在.git/hooks目錄尋找hooks。

Git 2.9中還包含了其他的一些改進(jìn),如更好的檢測文件重命名、更好的處理git日志中的選項卡、和更豐富的git描述(包含算法)。然而,這次Git 2.9的改進(jìn)和錯誤修正的列表還很長,在這里不一一列出了。你可以在發(fā)布說明中找到更多的內(nèi)容。

查看英文原文:Git 2.9 Adds New Features to Merge, Rebase, Commit, and More

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號