天天看點

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已經可以過濾幾種不同的變化:

–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

備注:經

Segmentfault

編輯更新 Git 後試驗測試,文章中,使用 git 帶上參數時,大多格式如 "–interactive rebase"的應該"--interactive rebase",這裡的"-"應為"--", 可能是作者的 blog 系統自作聰明地把 "--"替換成"-"所至。

繼續閱讀