關於Git和Github你不知道的十件事

本文爲翻譯文章。原文連接:Ten Things You Didn't Know Git And GitHub Could Dohtml


Git 和 GitHub都是很是強大的工具。即便你已經使用他們很長時間,你也頗有可能不知道每一個細節。我整理了Git和GitHub可能提升平常效率的10個經常使用技巧。git

GitHub

快捷鍵: t 和 w

在你的源碼瀏覽頁面,按t能夠快速進入模糊文件名搜索模式:程序員

clipboard.png

在你倉庫主頁,按w能夠快速進行分支過濾:github

clipboard.png

在任意GitHub頁面中,按?展現當前頁面可用的快捷鍵:工具

clipboard.png

忽略空格: ?w=1

在任意的diff URL添加?w=1用來整理縮進:網站

clipboard.png

按範圍過濾提交記錄: master@{time}..master

你能夠建立一個對比頁面經過使用URL github.com/user/repo/compare/{range}。範圍(range)能夠是兩個SHA例如sha1…sha2或者兩個分支名稱例如master…my-branch。範圍同時也很是智能的支持使用時間做爲關注點。你能夠經過master@{1.day.ago}…master過濾從昨天開始的提交。例如:連接,https://github.com/rails/rails/compare/master@{1.day.ago}…master顯示Rails項目中所有昨天開始的提交記錄和變化:spa

clipboard.png

按做者過濾提交記錄: ?author=github_handle

你能夠經過在對比頁面URL中增長?author=github_handle來按做者過濾提交記錄。例如:連接https://github.com/dynjs/dynjs/commits/master?author=jingweno顯示jingweno對Dynjs 的提交記錄:命令行

clipboard.png

.diff 和 .patch

在比較頁面、合併請求頁面或者評論頁面的URL後增長.diff或者.patch,能夠獲得diff或者patch的文本格式。例如:連接https://github.com/rails/rails/compare/master@{1.day.ago}…master.patch顯示Rails項目中所有昨天開始的提交記錄和變化的文本格式:翻譯

clipboard.png

郵件回覆

你能夠直接在收到的GitHub通知郵件進行評論,沒必要在網站頁面中評論。GitHub會正確的處理你的評論:設計

clipboard.png

連接行

在文件展現頁面,點擊某行或者經過按SHIFT選擇多行,URL會有相應的改變。若是你要給你的隊友分享一段代碼是很是方便的:

clipboard.png

關注用戶

在合併請求、問題或者任何評論中中提到用戶會使用戶關注所有的後續通知:

clipboard.png

自動連接

在合併請求、問題、或者任何評論中,sha和問題碼(例如:#1)會被自動連接。而且,你也能夠連接其它倉庫的sha或者問題碼,格式:user/repo@sha1或者user/repo#1。下面是一個評論中經過sha自動連接的例子:

clipboard.png

hub

Hub 是 GitHub的命令行。它提供了Git和Github之間的集成。一個最有用的命令就是在命令行輸入hub pull-request建立pull request。詳見readme.

Git

git log -p FILE

查看README.md的修改歷史,例如:

> git log -p README.md

git log -S’PATTERN’

例如,搜索修改符合stupid的歷史:

> git log -S'stupid'

git add -p

交互式的保存和取消保存變化,使用:

> git add -p

git rm –cached FILE

這個命令只刪除遠程文件,例如:

> git rm --cached database.yml

刪除database.yml被保存的記錄,可是不影響本地文件。這對刪除已經推送過的忽略文件記錄並且不影響本地文件是很是的方便的。

git log ..BRANCH

這個命令返回某個非HEAD分支的提交記錄。假如你在一個功能分支,輸入:

> git log ..master

返回所有master分支的歷史記錄,包括未被合併到當前分支的提交記錄。

git branch –merged & git branch –no-merged

這個命令返回已合併分支列表或未合併的分支列表。這個命令對合並前檢查很是有用。例如,在一個功能分支,輸入

> git branch --no-merged

返回未合併到該分支的分支列表。

git branch –contains SHA

返回包含某個指定sha的分支列表。例如:

> git branch --contains 2f8e2b

顯示所有包含提交2f832b的分支。這個命令對於驗證git cherry-pick完成很是有幫助。

git status -s

返回一個簡單版的git status。我設置這個命令爲默認git status來減小噪音。

git reflog

顯示你在本地已完成的操做列表。

git shortlog -sn

顯示提交記錄的參與者列表。和GitHub的參與者列表相同。

Summary

Git是一個設計良好的工具。瞭解它能夠直接讓你更有效率併成爲一個更有才華的程序員。GitHub,在另外一個方面,在Git基礎上提供便利的團隊合做特性。有能力使用GitHub也會提升你平常效率。

爲了更好的加深你對的Git和Github瞭解,我推薦一些資料:

相關文章
相關標籤/搜索