Git 1.8.5 新特性
在等待下一個帶來重要更新的git大版本同時,讓我們先來看看最新的修正版1.8.5的特性說明。
下面是我作為普通git用戶從我感興趣的發布說明文檔中發掘到的信息。
噢,如果你還沒看過我之前的發布筆記,那就去看看吧,1.8.2、1.8.3 和1.8.4。
慣例升級建議
按慣例,我會提供一些升級的建議,包括警告和提醒(大部分時候,這些建議官方會發布的比較慢,我們也控制不了)。下面是一份升級指導:
- 如果你在OSX上使用homebrew,執行brew update && brew upgrade git。
- 如果是基于Ubuntu的發行版,使用智能的apt trick(其余的發行版留待讀者聯系J)。
- 在windows上,僅僅執行新的 installer就可以了(Windows發布通常會拖慢一些,所以如果你現在沒發現,請耐心等待。)。
HEAD 的新別名終于可以使用
這個特性開發了一段時間,最終可以了:HEAD有了一個新的別名,@。如git log @.
一些rebase改進
Rebase有如下改進:
- 在–interactive rebase的操作中,提交的id會遵照core.abbrev的長度(core.abbrev是保存提交的哈希的縮寫長度的配置項,默認為7)。
- 你現在可以通過修改配置pull.rebase到preserve,來定制git pull –rebase是否使用默認情況下變平還是保留合并。對這一點的細節和rebase –preserve-merges的作用,請參考Stack Overflow的答案。
status小改進
這次發布中包含了不少git status的改進:
- 不再打印$name.ignore設置為all的子模塊的變化信息。
- 在cherry-pick中顯示當前被選中的提交。
- 輸出中不再包含以#開頭的行。如果你用腳本解析git status的輸出,現在需要更新為git status –porcelain。
- git status 和 git branch -v -v 現在區別不依賴任何其他分支的分支,和依賴的分支同步的分支,以及依賴一些已經不存在分支的分支。
Diff 支持所有非指定類型(all-but)
git diff –diff-filter已經可以過濾幾種不同的變化:
1 2 3 4 5 6 |
–diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]] 只選擇哪些添加 (A), 賦值 (C), 刪除 (D), 修改 (M), 重命名 (R)的文件, 它們的類型(如 普通文件, 符號鏈接, 子模 塊, …) 是否改變 (T), 是否未合并 (U), 是未知 (X), 或它們的對崩潰(B). 任何過濾字符的組合(包括none)均可使用。當組 合中包括All或none,如果任一文件匹配了其他選項,就選擇了所有路徑。如果沒有文件匹配其他選項,什么都不做。 |
Diff現在支持接受小寫字母參數,含義為展示所有非指定類型的變化。
HTTP變量區分站點
- http.*變量現在可以指定URL。如下例子會在和指定的站點交互時關閉http.sslVerify。
[http]
sslVerify = true
[http "https://weak.example.com/"]
sslVerify = false
在move時引入子模塊感知
在每個發布版本中,子模塊的支持一直在持續改進。這次git支持了子模塊的重新定位。
‘git mv A B’在移動子模塊A時,git支持重新定位其工作數,調整其路徑以匹配.gitmodules文件。
性能,內部實現等
- HTTP傳輸層在可能的情況下嘗試使用TCP keepalive。
- git repack現在采用c編寫。
其他信息
下面是直接從發布說明中摘出來的點:
- git whatchanged不建議使用,但沒有去除。其在文檔大部分篇幅中重要性降低。
- git cherry-pick 現在支持git cherry-pick – 以從前一個分支獲取。
- xdg-open可以用作 git web-browse的瀏覽器后端,進而豐富了git help –w的輸出。
- 和make –C一樣,git –C…使Git在執行任何操作之前先切換到那個路徑。
- 使foo^{tag}去除自身的一個tag,也就是空操作,并在foo不是一個tag時失敗。git rev-parse –verify v1.0^{tag}會簡化如下操作test $(git cat-file -t v1.0) = tag。
- git push –no-thin 實際上禁止了“thin pack transfer”優化。
- 智能路徑規范可以在更多的地方使用。如“:(icase)makefile”匹配Makefile和makefile;“:(glob)foo/**/bar”匹配bar,foo以及任意foo的子文件夾。
- Git blame現在可以接受不止一個-L選項來獲取原版本中多行信息。
- http客戶端可以使用http.savecookies配置變量請求保存cookies。
- Git fetch(git pull一樣)會檢查fetch.prune和remote.*.prune配置變量。其行為和加上-prune命令行參數一樣。
原文鏈接: atlassian 翻譯: 伯樂在線 - Codefor
譯文鏈接: http://blog.jobbole.com/52785/
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!