在等待下一個帶來重要更新的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 系統自作聰明地把 "--"替換成"-"所至。